typedef struct
{
   string color;
   int age;
}Dog;


int main(void)
{
    Dog cookie = ("brown", 6);
    cookie.color = "blue";
    cookie.age = 12;
}

你好,我想知道有没有办法这样编辑多个 struct 值, 同时只使用一行,而不是一遍又一遍地重复"structName.varName".

是否也有类似的方法来更改C中对象的多个值?非常感谢.

推荐答案

通过使用compound literal个临时对象,可以一次为多个 struct 成员赋值:

cookie = (Dog) { "blue", 12 };

或者为了提高可读性,可以将此代码与designated initializers(等效代码)结合使用:

cookie = (Dog) { .color = "blue", .age = 12 };

C++相关问答推荐

librsvg rsvg_handle_get_dimensions获取像素大小与浏览器中的渲染大小没有不同

CC crate 示例不会与C函数链接

为什么在C中设置文件的位置并写入文件,填充空字符?

为什么复合文字(C99)的返回会生成更多的汇编代码?

如何在C客户端应用程序的ClientHello消息中添加自定义扩展?

函数内的局部字符指针

Clang警告称,`ffi_type`与`sizeof`不兼容

GCC不顾-fno-Builtin-SINCOS旗帜向SINCOS发出呼唤

在基本OpenGL纹理四边形中的一个三角形中进行渲染

解决S随机内存分配问题,实现跨进程高效数据共享

RawMotion的XInput2错误(具有较高值的XISelectEvents上的BadValue)

可变宏不能编译

这个空指针类型的转换是有效代码还是恶意代码?

为什么电路板被循环删除?

将不同类型的指针传递给函数(C)

将数组中的所有元素初始化为 struct 中的相同值

使用 _Atomic float 时,MSVC 编译的代码会命中调试断言

快速准确计算double的小数指数

Clang 是否为内联汇编生成了错误的代码?

C23 中是否有 __attribute__((nonnull)) 的等效项?