Je possède ce code:ne peut pas comprendre pourquoi ce comportement
char *name[] = { "a1", "b2", "c3", "d4" };
printf("%s\n", *name); //the critical line
liés à critical line
:
Sous cette forme, la sortie est simple: a1
. Si je remplace le critical line
avec:
printf("%s\n", ++*name);
alors la sortie est 1
. Je pense que jusqu'à présent tout est bon.
La prise en compte du fait que name
est un pointeur sur la première chaîne de caractères, respectivement "a1"
, je remplace le critical line
avec:
printf("%s\n", ++name);
dans l'espoir que je vais "b2"
résultat en sortie. Mais j'obtiens cette erreur:
../src/test.c:32: error: lvalue required as increment operand
.
Question: Je ne comprends pas pourquoi ++*name
est légal - name
est un pointeur sur la première chaîne de caractères - et ++name
est pas. À mon avis, le ++name
devrait déplacer le name
à la prochaine chaîne de caractères. Quelqu'un peut-il m'expliquer où est le manque de compréhension?
Voir mon commentaire à la réponse de @ Kerrek. – artaxerxe