NewbieContest

Programmation => Langages compilés => Discussion démarrée par: TrackNeur le 19 Mars 2009 à 15:56:47



Titre: [Résolu][C] Problème vaudou
Posté par: TrackNeur le 19 Mars 2009 à 15:56:47
Bonjour,

Je suis actuellement en train de travailler sur une librairie gérant les listes pour mon cour de programmation. Dans cette librairie, j'ai décidé d'ajouter une fonction suite qui prend une liste et qui retourne la liste privé de son premier élément.

Tout d'abord, j'ai écrie une fonction qui devrait fonctionner mais qui dans la pratique ne fonctionne que quand elle en a envie (sic) :

Code:
liste* suite (const liste l){
   
    liste *sL;
    elem_liste *e;

    e = l;
    (*sL)=e->suiv;

    return sL;
}

J'ai finalement réussi à la faire fonctionner tout le temps en l'écrivant ainsi :

Code:
liste* suite (const liste l){
   
    elem_liste *e;
    e = l;

    return &(e->suiv);

}

Ma question est donc : Pourquoi la première fonction ne fonctionne pas correctement alors qu'elle semble faire la même chose que la seconde ?

Voici ma structure de donnée (ça peut être utile ...) :

Code:
typedef struct s_elem_liste {
    int info;
    struct s_elem_liste *suiv;
} elem_liste;

typedef elem_liste* liste;


Titre: Re : [C] Problème vaudou
Posté par: PtitYeti le 19 Mars 2009 à 23:15:20
Bonsoir,

a priori, rien de vaudou au fait que ton premier code produise un segfault: tu affecte une valeur a un pointeur non initialisé.

(*sL) = whateveryouwant va poser probkème si sL n'est pas initialisé.


Titre: Re : [C] Problème vaudou
Posté par: CommComm le 20 Mars 2009 à 07:35:04
Si c'est pas les effets de la mondialisation, ça... Un Yeti qui répond à une question sur le vaudou !


Titre: Re : [C] Problème vaudou
Posté par: TrackNeur le 20 Mars 2009 à 10:45:40
Aaaaah Je comprend mieux pourquoi mon prof nous disait de toujours se poser la question "mais où habitez-vous ?" quand on utilise les pointeurs...

Merci PtitYeti, je suis vraiment un noob pour pas avoir compris ça. -_-


Titre: Re : [Résolu][C] Problème vaudou
Posté par: PtitYeti le 20 Mars 2009 à 15:37:06
De rien!

Les pointeurs n'aiment pas du tout l'à peu près et généralement, ça ne pardonne pas...