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 :

problème de pointeurs


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Février 2006
    Messages
    220
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 220
    Par défaut problème de pointeurs
    Bonjour,

    J'ai oublié mes notion en C et je recontre un problème (assez courant) le pointeur déclaré dans le main, passé à une fonction, n'est pas modifié dans le main.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    //fct.h
    typedef struct b {
    	int a;
    	struct b *next;
    } boxe;
     
    //fct.c
    void mafonction(boxe * b) {
    //... traitement ...
     
    }
     
    //main.c
     
    boxe b = malloc(...)
    b = NULL;
    mafonction(b);
     
     
    b est toujours NULL!
    meme en essayant le passage mafonction(&b)

  2. #2
    Invité(e)
    Invité(e)
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    /* allocation d'une boxe*/
    boxe b = malloc(sizeof(*b));
    /* assignation de b à NULL : on perd toute trace de la mémoire allouée. */
    b = NULL;
    /* appel à ma fonction avec NULL comme paramètre*/
    mafonction(b);
    Code qui fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    #include <stdio.h>
    #include <stdlib.h>
     
    struct box{
        int a;
        int b;
    };
     
    void fonction(struct box * b)
    {
       b->a = 15;
       b->b = 36;
    }
     
    int main(void)
    {
        struct box *b = malloc(sizeof(*b));
        b->a = 0;
        b->b = 0;
        printf("%d:%d\n", b->a, b->b);
        fonction(b);
        printf("%d:%d\n", b->a, b->b);
        free(b);
        return 0;
    }

Discussions similaires

  1. Problème de pointeurs..embrouillé
    Par Frenchy dans le forum C++
    Réponses: 11
    Dernier message: 10/03/2005, 16h33
  2. Problème de pointeur avec un TQuery
    Par Oluha dans le forum Bases de données
    Réponses: 3
    Dernier message: 25/01/2005, 13h57
  3. Problème de pointeur
    Par toma_lille dans le forum C++
    Réponses: 1
    Dernier message: 07/12/2004, 21h26
  4. [MFC] Problème de pointeur !!
    Par acastor dans le forum MFC
    Réponses: 7
    Dernier message: 19/03/2004, 15h50
  5. TBitmap et problèmes de pointeurs...
    Par benj63 dans le forum C++Builder
    Réponses: 8
    Dernier message: 28/07/2003, 13h39

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