C / C ++: постоянный массив постоянных массивов - PullRequest
3 голосов
/ 04 января 2011

Какой будет синтаксис для создания константного массива константных массивов?

Я хочу, чтобы аргумент функции был константным массивом констант char* строк.

Ответы [ 4 ]

6 голосов
/ 04 января 2011

Вы делаете это, помещая const справа от первой звездочки, например,

void f(const char *const *argument)

или, что эквивалентно,

void f(const char *const argument[])

Для получения дополнительных измерений просто добавьте еще *consts (я бы не использовал альтернативу [] в этом случае):

void f(const char *const *const *argument) // 2D array of strings
4 голосов
/ 04 января 2011

Ключ к этому - написать C ++ назад (справа налево):

         char * const myVar[10] const;

... что говорит о том, что myVar - это константный массив длиной 10 константного указателя на символ.

1 голос
/ 05 марта 2014

Вопрос немного неясен: вы хотите создать (определить) массив или передать его функции?

Синтаксис определяет постоянный массив констант C-строк равен

const char array[2][14] = { "first string", "second string" };

Чтобы определить постоянный массив константных массивов нестрокового типа, инициализатор отличается:

const int array[2][3] =
{
  { 1, 2, 3 },
  { 4, 5, 6 }
};

(Если это уместно, вы должны сделать массив static const.)

1 голос
/ 04 января 2011

Я считаю, что это будет

const char* const array[size][size] = { /* initializer */ }

То есть массив массивов неизменяемых указателей на символы, которые нельзя изменить.

...