Standard C89 requires the elements of an initializer to appear in a fixed order, the same as the order of the elements in the array or structure being initialized.
In ISO C99 you can give the elements in any order, specifying the array indices or structure field names they apply to, and GNU C allows this as an extension in C89 mode as well. This extension is not implemented in GNU C++.
C89中数组和结构,组合都是按照固定序列进行初始化的,C99中有了指派初始化的概念,有以下两种:
.符号和:符号,使用如下:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
struct sa{
int a;
int b;
char c[10];
};
struct sa va[]={{.a=1,.b=3,.c="haha"},{a:2,b:4,c:"ahah"}};
int i=0;
for(i=0;i<sizeof(va)/sizeof(va[0]);i++)
{
printf("a=%d;b=%d;c:%s/n",va[i].a,va[i].b,va[i].c);
}
return 0;
}
本文介绍了C99标准引入的指派初始化概念及其用法,对比了C89中的固定序列初始化方式,并通过示例代码展示了如何在结构体数组中使用指派初始化。
833

被折叠的 条评论
为什么被折叠?



