c 结构变量赋值中的编译错误

标签 c struct variable-assignment

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/

相关文章:

c - C语言静态分配

c - c中数组的随机元素

编译输出代码

C - 将结构序列化为 char* 会更改原始数据

c++ - 在 C 和 C++ 中创建点数组

c - 如何为没有名称的结构体对象指定存储类说明符?

c - 如何在C程序中多次从stdin读取数据

templates - 为什么在 C++0x 中,编译器选择通用移动赋值而不是特定移动赋值?

java - 无法使用 jpa 更新对象

c# - C#中初始化和赋值有什么区别