结构数组初始化

时间:2014-11-02 18:44:23

标签: 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;
}

2 个答案:

答案 0 :(得分:4)

您不能将初始化程序列表分配给已定义的对象。

b[0] = {"Maharshi", 5};
b[1] = {"Hello", 6};

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

b[0] = ( struct test ){ "Maharshi", 5 };
b[1] = ( struct test ){ "Hello", 6 };

或者在定义数组时使用初始化列表。

答案 1 :(得分:1)

在声明结构时,不能使用列表初始化! 你可以像这样使用它:

int main () {
    struct test{
            char a[100];
            int g;
    }b[2] =
    {{"Maharshi", 5},
     {"Hello", 6}};

    printf("%u %u", b[0].g, b[1].g);

    return 0;
}

(请注意,内侧括号是可选的。)