结构体数组初始化

Mah*_*Roy 1 c

遇到的错误是:“{”标记之前的预期表达式。为什么会这样呢?

#include <stdio.h>
int main ()
{
    struct test
    {
        char a[100];
        int g;
    } b[2];
    b[0] = {"Maharshi", 5};
    b[1] = {"Hello", 6};
    printf("%u %u", &b[0], &b[1]);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

Vla*_*cow 5

您不能将初始值设定项列表分配给已定义的对象。

b[0] = {"Maharshi", 5};
b[1] = {"Hello", 6};
Run Code Online (Sandbox Code Playgroud)

但是你可以通过复合文字来做你想做的事:

b[0] = ( struct test ){ "Maharshi", 5 };
b[1] = ( struct test ){ "Hello", 6 };
Run Code Online (Sandbox Code Playgroud)

或者在定义数组时使用初始值设定项列表。