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