You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何C语言允许通过`var = (struct NAME){…}`为结构体变量赋值?

结构体变量整体赋值的正确姿势
  • 之前误以为结构体变量定义后不能整体赋值,像下面这种写法确实是错误的:

    struct Student student1;
    student1 = {"Andy", 18};
    

    原因是花括号初始化列表只能用于变量初始化阶段,不能直接放在赋值运算符右边。

  • 过去只能靠逐个成员赋值来完成:

    struct Student student1;
    student1.name = "Andy";
    student1.age = 18;
    
  • 但其实可以通过复合字面量实现整体赋值:

    struct Student student1;
    student1 = (struct Student){"Andy", 18}; // 合法
    

    这里(struct Student){"Andy", 18}是C99标准引入的复合字面量,它会生成一个临时的struct Student匿名实例,然后利用结构体支持直接赋值的特性(赋值时会自动逐成员拷贝),把这个临时实例的值整体赋给student1。

内容的提问来源于stack exchange,提问作者leotsing

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 12:42:00