遇到的错误是:' {'之前的预期表达式令牌。为什么会这样?
#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;
}
答案 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;
}
(请注意,内侧括号是可选的。)