Постоянный массив постоянных объектов - PullRequest
4 голосов
/ 03 октября 2011

Как вы определяете постоянный массив постоянных объектов в C (не C ++)?

Я могу определить

int const Array [] = {
    /* init data here */
};

, но это непостоянный массив постоянных объектов.

Я мог бы использовать

int const * const Array = {
    /* init data here */
};

, и это, вероятно, сработало бы.Но возможно ли это сделать с помощью синтаксиса массива?(Который выглядит более чистым)

Ответы [ 3 ]

11 голосов
/ 03 октября 2011

Массив не может быть "постоянным" - что это вообще должно означать?В любом случае размер массива уже является константой времени компиляции, и если все члены являются константами, что еще вы хотите?Какую мутацию вы пытаетесь исключить, которая возможна для const int[]?

7 голосов
/ 03 октября 2011

«Двойное константность» относится только к указателям, потому что их можно изменить, чтобы они указывали на что-то еще 1 , поскольку характеристики массивов сами по себе статичны (массивы нельзя изменить в размере / типе /указать на что-то еще) единственное const, которое вы можете применить, - это их элементы.

  1. так что у вас есть варианты "указатель на int", "указатель на постоянную int", "постоянный указатель на int", "постоянный указатель на постоянную int".
2 голосов
/ 03 октября 2011

Если вы хотите, чтобы элементы массива не изменялись, просто используйте это:

const int Array[];

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...