Différence entre «char name» et «char name » en tant qu’argument d’une fonction en c

Lorsque vous définissez une fonction comme celle-ci:

void myFunction(arguments){ // some instructions } 

quelle est la déférence entre utiliser char[] name et char name[] comme argument de la fonction. Et pourquoi ne pas utiliser un pointeur sur char à la place.

Le 1 er ( char[] name ) ne comstackra pas car c’est une syntaxe incorrecte.

Les sous-scripts de tableau dans les définitions des parameters de l’implémentation d’une fonction vont au nom du paramètre (obligatoire).

La syntaxe correcte est la 2 ème :

 char name[] 

Exemple:

 void p(char[]); /* prototype */ void p(char name[]) /* implementation */ { } 

Cependant, char[] name sera considéré comme une syntaxe non valide.

Dans d’autres langages tels que Java et C #, l’emplacement des crochets [] est simplement du sucre syntaxique et n’affecte en rien le programme.

C, étant une langue plus ancienne, n’a pas cette flexibilité. Un tableau doit être déclaré avec les crochets après le nom.

Pour ce qui est de savoir quand et pourquoi utiliser un pointeur, lisez-le ici .

Vous obtiendrez une erreur de compilation.

 0.c:3:14: error: expected ';', ',' or ')' before 'a' int f(char []a){ ^ 

Il est impossible de comstackr un code comme celui-ci:

 #include  int f(char []a){ } main(){ }