2011-01-04 7 views

Répondre

6

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 
+0

al bien, merci ... mais ne serait-il pas plus clair d'avoir les astérisques comme ceci 'const char * const * argument'? –

+1

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

4

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.

1

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é.

0

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.)

Questions connexes