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 :

Probleme réinitialisation pointeur


Sujet :

C

  1. #1
    Membre chevronné Avatar de corentin59
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    462
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 462
    Par défaut Probleme réinitialisation pointeur
    Bonjour à tous,

    un petit problème sur lequel je bloque depuis 2 jours.
    Voici le code de ma fonction d'allocation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    void faireAllocation(double *pointeur)
    {
    pointeur = calloc(NBLIG*NBCOL,sizeof(double));
    if ( pointeur==NULL )
    {
    /* J'affiche un message d'erreur et je sort, je passe les détails */
    }
     
    return;
    }
    Le problème est que, lorsque que dans une autre fonction, j'ai les lignes suivantes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    static double *pointeur=NULL;
    faireAllocation(pointeur);
    Et bien, en suivant l'exécution ligne à ligne avec le débogueur :
    - avant d'entrer dans la fonction "faireAllocation", pointeur vaut bien 0
    - dans la fonction "faireAllocation", l'allocation se fait sans problème et pointeur vaut autre chose que 0
    - une fois que je suis retourné dans la fonction appelante, juste après "faireAllocation", pointeur vaut de nouveau 0 !!

    Si quelqu'un pouvait m'éclairer sur la cause possible de cette réinitialisation de pointeur, cela m'arrangerait.

    Merci et bonne journée

  2. #2
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 493
    Billets dans le blog
    1
    Par défaut
    Que crois-tu que le programme suivant affiche ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    void doubler(int a)
    {
        a = a * 2;
    }
     
    int main(void)
    {
        int a = 1;
        doubler(a);
        printf("a = %d", a);
        return a;
    }
    Si tu sais répondre à cette question et si tu sais comment écrire la fonction pour que a soit effectivement doublé à la sortie de la fonction, alors tu sauras répondre à ton problème.

    Indice : & *

  3. #3
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 026
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 026
    Par défaut
    Les argument d'une fonction sont passé par copie, si on veut qu'ils soient mis à jour, il faut utiliser des pointeurs.

    "pointeur" n'est donc pas le même que tu sois dans la fonction appelée ou que tu sois dans la fonction appelante.

    Donc si tu veux mettre à jour un pointeur, il faudra utiliser un pointeur de pointeur double **pointeur.

    EDIT : grillé par Bktero

  4. #4
    Membre chevronné Avatar de corentin59
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    462
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 462
    Par défaut
    Effectivement, je me suis fais avoir comme un bleu.

    Merci de vos réponses rapides (je ne sais plus comment on fait pour dire que c'est résolu)

  5. #5
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 493
    Billets dans le blog
    1
    Par défaut
    De rien.

    En bas de la page, il y a un bouton

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. probleme de pointeur ....
    Par berg dans le forum C
    Réponses: 6
    Dernier message: 12/01/2006, 22h46
  2. Probleme de pointeur
    Par Naruto_kun dans le forum C
    Réponses: 17
    Dernier message: 14/12/2005, 20h47
  3. Probleme de pointeurs
    Par mickyoun dans le forum C++
    Réponses: 9
    Dernier message: 10/08/2004, 17h15
  4. Probleme de pointeur sur une fonction
    Par nicky78 dans le forum C
    Réponses: 2
    Dernier message: 23/05/2004, 20h26
  5. probleme avec pointeurs de structures
    Par remi77 dans le forum C
    Réponses: 2
    Dernier message: 20/10/2003, 13h19

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