char c [2] = {[1] = 7}是什么;做?

时间:2016-03-25 16:39:22

标签: c arrays initializer

我正在阅读Bruce Dawson's article on porting Chromium to VC 2015,而他encountered some C code that I don't understand

代码是:

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

Bruce对它的唯一评论是:“我不熟悉所使用的数组初始化语法 - 我认为它是一些只有C的构造。”那么这个语法究竟意味着什么?

2 个答案:

答案 0 :(得分:12)

C99允许您以任何顺序指定数组的元素(这似乎被称为"指定的初始化器"如果您正在搜索它)。因此,此构造将7分配给c的第二个元素。

这个表达式相当于char c[2] = {0, 7};,它不会为这么短的初始化器节省空间,但对更大的稀疏数组非常有帮助。

有关详细信息,请参阅此页面: https://gcc.gnu.org/onlinedocs/gcc/Designated-Inits.html

答案 1 :(得分:2)

它的意思是

char c[2]={ 0, 7 }

或者你可以说

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