je ne peux pas mettre *rcin car je ne veux pas crée une chaîne de caractère dynamique, un cin ne dépassant pas 10 caractère en général...
Cela n'a rien à voir avec le fait que le tableau soit alloué dynamiquement ou non.
Dans les deux cas, l'argument envoyé à la fonction est l'adresse du premier élément du tableau, donc est du type T* si les éléments du tableau sont de type T. La fonction reçoit cette adresse et la met dans un pointeur (du type T*). Le paramètre est donc toujours un pointeur.
Le C tolère de déclarer le paramètre p soit sous la forme T* p (qui est exactement le type du paramètre p) soit sous la forme T p[] ( qui sera ici interprété par le compilateur comme T* p) soit même sous la forme T p[10] où la dimension spécifiée sera superbement ignorée par le compilateur et donc qui se ramène au cas précédent.
-
1 2
| while (p!=NULL)
{ if (strcmp(p->suivant->cin,rcin)==0) |
Ceci est incorrect puisqu'on peut avoir p != NULL mais p->suivant == NULL
Le test devrait être
while (p!=NULL && p->suivant != NULL)
- Et que se passe t-il si la valeur recherchée est celle stockée par p == *liste ?
-
normalement je devrai libérer l'espace de l'élément *(p->suivant),
Oui
Partager