Passer le pointeur struct pour fonctionner dans c
Je vais avoir un problème avec le passage d'un pointeur vers une structure à une fonction. Mon code est essentiellement ce qui est indiqué ci-dessous. Après l'appel de modify_item dans la fonction principale, des trucs == NULL. Je veux des trucs pour être un pointeur sur un élément de structure avec l'élément égal à 5. Ce que je fais mal?
void modify_item(struct item *s){
struct item *retVal = malloc(sizeof(struct item));
retVal->element = 5;
s = retVal;
}
int main(){
struct item *stuff = NULL;
modify_item(stuff); //After this call, stuff == NULL, why?
}
source d'informationauteur Swiss
Vous devez vous connecter pour publier un commentaire.
Parce que vous passez le pointeur de la en valeur. La fonction fonctionne sur une copie du pointeur, et ne modifie jamais l'original.
Passer un pointeur vers le pointeur (c'est à dire un
struct item **
), ou plutôt le retour de la fonction le pointeur.ou