【问题标题】:What does char c[2] = { [1] = 7 }; do? [duplicate]char c[2] = { [1] = 7 }; 是什么意思?做? [复制]
【发布时间】:2016-07-13 10:53:51
【问题描述】:

我在看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 语言的构造。”那么这个语法到底是什么意思呢?

【问题讨论】:

    标签: c arrays initializer


    【解决方案1】:

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

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

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

    【讨论】:

    • 这里相当于char c[2] = {0, 7};,但是指定的初始化器在长数组和结构体的情况下非常方便。
    • 这是另一种简单的可视化方法。添加到答案中。
    【解决方案2】:

    它的意思是

    char c[2]={ 0, 7 }
    

    或者你可以说

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

    【讨论】:

    • 为什么NULL,这是一个空的指针常量?!您想使用0'\0' 来初始化char
    • 哦,对不起,我的意思是 0x0 它的 nt NULL
    • 您的第二个示例不是初始化程序,而是运行时语句。
    • 这是为了解释它的作用
    猜你喜欢
    • 2016-08-18
    • 2014-04-08
    • 2015-05-29
    • 2013-03-10
    • 1970-01-01
    • 2022-12-16
    • 1970-01-01
    • 2012-04-26
    • 2016-12-10
    相关资源
    最近更新 更多