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

问题描述:

我在阅读Bruce Dawson's article on porting Chromium to VC 2015,他encountered some C code that I don't understandchar c [2] = {[1] = 7};做?

的代码是:

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

布鲁斯它唯一的评论是:“我不熟悉使用数组初始化语法 - 我认为这是一些C-只有构建”那么这个语法究竟是什么意思?

C99允许您以任意顺序指定数组的元素(如果您正在搜索它,这看起来称为“指定的初始化程序”)。所以这个构造将7分配给c的第二个元素。

该表达式相当于char c[2] = {0, 7};,它不会为这样一个简短的初始化程序节省空间,但对于较大的稀疏数组非常有用。

有关更多信息,请参见本页面: https://gcc.gnu.org/onlinedocs/gcc/Designated-Inits.html

+2

它等同于'字符C [2] = {0 ,7};'这里指定的初始化器在长数组和结构的情况下非常方便。 –

+0

这是另一种可视化的简单方法。添加到答案中。 –

它的含义是

char c[2]={ 0, 7 } 

或者可以说

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

为什么'NULL',这是一个空***指针***常量?!你想用'0'或''\ 0''初始化'char'。 – alk

+0

哦,我的意思是0x0它的nt NULL – Mukesh

+0

你的第二个例子不是初始化器,而是运行时语句。 –