对 struct
变量赋值有疑问。
struct udata
{
char name[50];
int num;
char ch;
};
void main()
{
struct udata a = {"ram", 20, 'a'};
struct udata b;
//b = {"ashok", 10, 'c'}; - illegal
b = a;
}
在上面的代码中,b = {"ashok", 10, 'c'};
给出了编译错误,但它接受了 b = a;
。我希望两者都是类似的任务,但我不知道为什么不接受第一个。谁能解释一下为什么会这样?
注意:我正在使用 fedora gcc 编译器进行编译。
最佳答案
初始化器只能在声明时使用。如果你想在声明后初始化 b
,那么你可以使用复合字面量——C99 特性:
b = (struct udata){"ashok", 10, 'c'};
GCC 还支持化合物字面值作为 extension .
关于c 结构变量赋值中的编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24717297/