Значения по умолчанию для константного массива (когда не все индексы установлены явно)? - PullRequest
0 голосов
/ 13 ноября 2011

Я искал вокруг и не нашел ответа на это.Я хотел бы знать следующее:

Если я объявлю static unsigned char const ARRAY[256] = { [0] = <some_value> };, могу ли я ожидать, что неопределенные элементы (в данном случае все элементы, кроме элемента с индексом 0) будут иметь определенное значение, илиони будут случайными?

Мне это нужно для таблицы постоянного поиска, в которой не будут заполнены все элементы, но она не слишком велика, поэтому потеря некоторого пространства не является проблемой.

Предложения по более подходящим типам данных или соглашениям приветствуются.

Спасибо!

Ответы [ 3 ]

3 голосов
/ 13 ноября 2011

Остальная часть массива будет инициализирована нулем.

Также вы можете инициализировать более одного элемента в массиве, например:

char arr[10] = {1, 2, 3};

создаст и инициализируетмассив массив до:

index | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
---------------------------------------------
value | 1 | 2 | 3 | 0 | 0 | 0 | 0 | 0 | 0 | 0
0 голосов
/ 13 ноября 2011

Если вы хотите быть откровенным об этом и используете gnu c, всегда есть ...:

char array[256] = {[0 ... 255] = 0, [7] = 'f',/*and so on...*/};
0 голосов
/ 13 ноября 2011

Если вы хотите какое-то определенное поведение, то инициализируйте его таким образом. Предполагая некоторую причуду компилятора, от которой зависит правильная работа вашей программы, просто напрашивается на неприятности.

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