C中的有序数组初始化语法

时间:2014-04-02 14:03:29

标签: c arrays

我在xv6的代码中遇到了一个不熟悉的数组初始化语法。 原始代码在syscall.s

static int (*syscalls[])(void) = {
[SYS_fork]    sys_fork,
[SYS_exit]    sys_exit,
[SYS_wait]    sys_wait,
// ...
[SYS_halt]  sys_halt,
};

我运行了我的示例代码以确认此

const char* mystrings[] = {
   [2] "this",
   [1] "is",
   [0] "cool",
};


int main (int argc, char const* argv[])
{
   printf("%s %s %s\n",mystrings[0],mystrings[1],mystrings[2]);

        return 0;
}

输出

cool is this

C代码中的这种数组初始化是什么?我在哪里(找到这方面的文件?(我用gcc 4.6.3编译)

1 个答案:

答案 0 :(得分:3)

指定初始值设定项,C99的一部分。请参阅示例the GCC documentation。目前的标准参考是C11 6.7.9。

但是,GCC提供了一些此语法的扩展,例如省略=符号或范围。