【问题标题】:What does this mean in c? square brackets inside curly brackets [duplicate]这在c中是什么意思?花括号内的方括号[重复]
【发布时间】:2018-01-19 01:05:50
【问题描述】:
const int status[STATUS_SIZE] = {
        [0] = -1, 
        [1] = 0,
        [2] = 1,
};

const char *messages[MESSAGE_SIZE] = {
        [0] = "OK",
        [1] = "NG",
};

你能解释一下吗?

【问题讨论】:

    标签: c


    【解决方案1】:

    C99 引入了Designated Initializers,你可以用它来初始化一个数组 使用索引以任意顺序。

    6.27 Designated Initializers

    标准 C90 要求初始值设定项的元素以固定顺序出现,与被初始化的数组或结构中元素的顺序相同。

    在 ISO C99 中,您可以按任何顺序指定元素,指定它们适用的数组索引或结构字段名称,GNU C 也允许将其作为 C90 模式的扩展。此扩展未在 GNU C++ 中实现。

    要指定数组索引,请在元素值之前写入[index] =。例如,

    int a[6] = { [4] = 29, [2] = 15 };
    

    等价于

    int a[6] = { 0, 0, 15, 0, 29, 0 };
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-26
      • 2020-10-10
      • 2020-11-05
      • 2012-03-30
      相关资源
      最近更新 更多