Ceci est appelé passage par référence et comment le nom l'indique, cela signifie passer juste une référence de la variable (dans ce cas un char*
).
Soit solutions fonctionnent correctement, ce qui va réellement se passer est que, quand void functionName(char* string)
est appelée, l'adresse de la première char
en mémoire sera enregistré sur pile et passé en paramètre à la fonction.
Par conséquent, toute modification apportée à la variable à l'intérieur de la fonction modifierait également la variable d'origine.Dans ce cas, puisque vous devez passer un tableau, vous avez juste cette option.
Pour les types standards comme int
, float
vous pouvez les distinguer:
void passByValue(int i);
void passByReference(int &i);
La différence est que, dans l'ancienne valeur de cas est copié dans la pile lorsque vous appelez la fonction, alors que dans celui-ci juste une référence (pointeur) à la valeur est passée.
En termes de qui est réellement meilleur, j'ai toujours senti que la syntaxe 'char mystring []' en tant que paramètre de fonction est vraiment trompeuse. Cela a historiquement causé une confusion sans fin parmi les programmeurs C inexpérimentés qui croyaient à tort que les informations de taille de tableau étaient conservées dans le paramètre function, et que 'sizeof (mystring)' retournerait donc la taille du tableau plutôt que la taille du pointeur . Personnellement, je pense que cette syntaxe ne devrait même pas être autorisée. –