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

Mob*_*isk 8 c arrays initializer

我正在阅读Bruce Dawson关于将Chromium移植到VC 2015的文章,他遇到了一些我不理解的C代码.

代码是:

char c[2] = { [1] = 7 };
Run Code Online (Sandbox Code Playgroud)

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

Ada*_*m B 12

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

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

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

  • 它相当于`char c [2] = {0,7};`这里指定初始化器在长数组和结构的情况下非常方便. (2认同)