IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

initialiser un ptr passé comme paramétre


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 10
    Par défaut initialiser un ptr passé comme paramétre
    j'ai une fonction qui me passe comme paramétres: deux pointeurs pointé sur deux zones mémoire et les deux autres paramétres representent la taille de ces deux zones memoire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Init (void *a, void *b, int a_mem_size, int b_mem_size)
    je veux initialiser ces deux zone memoire, ce que jai fais est le suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    char * p_a;
    char * p_b;
    p_a = & a;
    p_b = & b;
    p_a = (char *) calloc(sizeof(void));
    p_b = (char *) calloc(sizeof(void));
    Vous pouvez me corrigé svp !

  2. #2
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    j'ai une fonction qui me passe comme paramétres: deux pointeurs pointé sur deux zones mémoire
    - Si je comprend ce qui est écrit, les zones mémoires sont déjà allouées et, dans ce cas, la fonction init n'a pas à allouer la mémoire avec un malloc/calloc
    je veux initialiser ces deux zone memoire
    Je comprend les remplir avec une valeur donnée (laquelle ? 0 ?)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Init (void *a, void *b, int a_mem_size, int b_mem_size)
    {
     int i;
     char * p=a;
     for(i=0; i<a_mem_size;i++) p[i] = 0;
    ...
    }
    Si la fonction doit allouer la mémoire elle-même et l'initialiser à 0,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Init (void **a, void **b, int a_mem_size, int b_mem_size)
    {
      *a = calloc(a_mem_size,1);
    ....
    }
    et pour l'appel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    type * za;
    Init(&(void *)za,....,dima,....);
    // test sur za != NULL
    Note :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    p_b = (char *) calloc(sizeof(void));
    On ne peut prendre sizeof(void). calloc a 2 arguments

  3. #3
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Il conviendrait plus d'utiliser le type size_t pour les données de tailles étant donné que c'est ce type qui est passé en paramètre à *alloc !
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

Discussions similaires

  1. Initialiser une classe passée en paramètre
    Par Crazytox dans le forum Débuter avec Java
    Réponses: 9
    Dernier message: 09/11/2014, 14h45
  2. Procédure stockée avec un dataset passé comme paramètre
    Par DEV-10 dans le forum Développement
    Réponses: 3
    Dernier message: 17/10/2011, 08h22
  3. Réponses: 3
    Dernier message: 19/08/2010, 17h17
  4. Réponses: 3
    Dernier message: 04/01/2010, 19h32
  5. Réponses: 10
    Dernier message: 04/07/2006, 20h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo