c语言结构体数组乱序初始化
c语言中可以在初始化的时候指定数组索引的内容进行初始化赋值,不需要为每一个数组元素指定内容初始化。这个功能只是在c语言中有效,c++会报错。
int x[10] = {
[2] = 1,
[3] = 2
};
这里就是为数组x的索引2和索引3指定的元素赋值,也就是把第三个元素赋值为1,第四个元素赋值为2,等价于:
int x[10];
x[2] = 1;
x[3] = 2;
如果是结构体,可以顺便对结构体的内容赋值
struct MyStruct
{
int a;
};
struct MyStruct b[] = {
[10] = {
.a = 10
},
};
这里有一个特殊的就是b没有指定数组的大小,那么就按照初始化指定索引最大值来定,这里索引是10,那么就是11个元素