Oui c'est héritée de C. La fonction:
void foo ( char a[100] );
Aura le paramètre de décroissance à un pointeur, et devient ainsi:
void foo ( char * a );
Si vous voulez que le type de pile est préservée, vous devriez passer une référence au tableau:
void foo ( char (&a)[100] );
C++ 03 8.3.5/3:
...Le type d'une fonction est déterminée selon les règles suivantes. Le type de chaque paramètre est déterminé à partir de sa propre decl-spécificateur-seq et de demande de déclaration. Après avoir déterminé le type de chaque paramètre, tout paramètre de type "tableau de T" ou "fonction de retour T" est ajusté pour être "pointeur de T" ou "pointeur de fonction de retour T, respectivement....
Pour expliquer la syntaxe:
Case à cocher pour "droite-gauche" de la règle dans google, j'ai trouvé une description de celui-ci ici.
Il serait appliqué à cet exemple approximativement comme suit:
void foo (char (&a)[100]);
Commencer à identifier un"
'a' est un
Déplacer vers la droite - nous trouver un )
si on inverse la direction de la recherche de l' (
. Comme nous déplacer à gauche, nous passons &
'a' est une référence
Après l' &
nous arrivons à l'ouverture (
donc on inverse à nouveau et regarder à droite. Maintenant nous voyons [100]
'a' est une référence à un tableau de 100
Et nous le sens inverse à nouveau jusqu'à ce que nous atteignons char
:
'a' est une référence à un tableau de 100 caractères