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个元素

posted @ 2022-09-19 09:34  秋来叶黄  阅读(291)  评论(0编辑  收藏  举报