Le prototype, c'est tout ce qu'il y a avant le point-virgule. Un prototype suivi d'un point-virgule, c'est une déclaration. Voilà pour la terminologie
.
Les premier et deuxième prototypes sont identiques, il n'y a aucune différence. Que ce soit à gauche ou à droite d'un *, tu peux mettre autant d'espaces que tu veux comme tu peux ne pas du tout en mettre. C'est valable pour n'importe quel autre symbole d'opérateur, pas pour * seulement.
Le troisième n'est même pas un prototype valide, une fonction ne peut pas retourner un tableau (et même si elle le pouvait, la syntaxe n'est toujous pas valide mais n'entrons pas dans ce détail). Une fonction peut cependant retourner un pointeur sur un élément d'un tableau. Pareil pour les arguments, on ne peut passer qu'un pointeur, pas un tableau, mais le compilateur est plus tolérent pour ce cas : chaque fois quuntableau apparaît en argument dans la déclaration d'une fonction, il est automatiquement transformé en pointeur. Donc la troisième forme devrait s'écrire par exemple :
char * strpbrk(const char chaine[], const char lettresARechercher[]);
C'est strictement la même chose que les deux premières déclarations.
Partager