Quelle serait la syntaxe pour créer un tableau constant de tableaux constants?C/C++: Tableau constant des tableaux constants
Je souhaite qu'un argument de fonction soit un tableau constant de chaînes constantes char*
.
Quelle serait la syntaxe pour créer un tableau constant de tableaux constants?C/C++: Tableau constant des tableaux constants
Je souhaite qu'un argument de fonction soit un tableau constant de chaînes constantes char*
.
Pour ce faire, placez const
à droite du premier astérisque, par ex.
void f(const char *const *argument)
ou de manière équivalente
void f(const char *const argument[])
Pour plus de dimensions, il suffit d'ajouter plus *const
s (je ne voudrais pas utiliser le []
autre dans ce cas):
void f(const char *const *const *argument) // 2D array of strings
La clé est d'écrire le C++ vers l'arrière (droite à gauche):
char * const myVar[10] const;
... qui dit que myVar est une longueur de tableau const 10 de pointeur const char.
Je crois que ce serait un
const char* const array[size][size] = { /* initializer */ }
C'est un tableau de tableaux de pointeurs immuables à des personnages qui ne peut pas être changé.
La question est un peu pas clair: Voulez-vous créer (définir) un tableau, ou passer à une fonction?
La syntaxe de définie une matrice constante de constantes chaînes C- est
const char array[2][14] = { "first string", "second string" };
Pour définir une matrice constante de matrices constantes de type non-chaîne, l'initialiseur diffère:
const int array[2][3] =
{
{ 1, 2, 3 },
{ 4, 5, 6 }
};
(Si c'est approprié, vous devez créer le tableau static const
.)
al bien, merci ... mais ne serait-il pas plus clair d'avoir les astérisques comme ceci 'const char * const * argument'? –
Non. Ce style est trompeur et nuisible. Cela donne l'impression que les astérisques se lient à la gauche, alors qu'en réalité ils se lient à la droite. – zwol