2016-03-25 8 views
8

Я читаю Bruce Dawson's article on porting Chromium to VC 2015, и он encountered some C code that I don't understand.Что означает char c [2] = {[1] = 7}; делать?

Код:

char c[2] = { [1] = 7 }; 

только комментарий Брюса на нем: «Я не знаком с синтаксисом инициализации массива используется - я предполагаю, что это какой-то C-только построить» Итак, что же означает этот синтаксис?

ответ

12

C99 позволяет вам указать элементы массива в любом порядке (это, по-видимому, называется «назначенные инициализаторы», если вы его ищете). Таким образом, эта конструкция назначает 7 второму элементу c.

Это выражение эквивалентно char c[2] = {0, 7};, которое не экономит место для такого короткого инициализатора, но очень полезно для больших разреженных массивов.

Смотрите эту страницу для получения дополнительной информации: https://gcc.gnu.org/onlinedocs/gcc/Designated-Inits.html

+2

Это эквивалентно 'полукокса с [2] = {0 , 7}; здесь, но назначенный инициализатор очень удобен в случаях больших массивов и структур. –

+0

Это еще один простой способ визуализации. Добавлено в ответ. –

2

Его значение будет

char c[2]={ 0, 7 } 

ИЛИ вы можете сказать

char c[2]; 
c[0]=0; 
c[1]=7; 
+0

Почему 'NULL', это указатель *** *** *** постоянный ?! Вы хотите использовать '0' или' '\ 0'' для инициализации' char'. – alk

+0

oh sry i имел в виду 0x0 его nt NULL – Mukesh

+0

Ваш второй пример не является инициализатором, но операторы времени выполнения. –