c++ - 如何一次将多个值分配给一个结构?

标签 c++ c struct

我可以在初始化 struct Foo 时这样做:

Foo foo =  {bunch, of, things, initialized};

但是,我不能这样做:

Foo foo;
foo = {bunch, of, things, initialized};

那么,两个问题:

  1. 为什么我不能做后者,前者是只用于初始化的特殊构造函数吗?
  2. 我怎样才能做类似于第二个例子的事情,即在一个结构已经被初始化之后,在一行代码中为它声明一堆变量?我试图避免对具有许多变量的大型结构执行此操作:

    Foo foo;
    
    foo.a = 1;
    foo.b = 2;
    foo.c = 3;
    //... ad infinitum
    

最佳答案

试试这个:

Foo foo;
foo = (Foo){bunch, of, things, initialized};

如果您有一个好的编译器(例如 GCC),这将起作用。

更新:在现代版本的 C(但不是 C++)中,您还可以使用带有指定初始值设定项的复合文字,如下所示:

foo = (Foo){ .bunch = 4, .of = 2, .things = 77, .initialized = 8 };

“.”之后的名称应该是您希望初始化的结构成员的名称。这些初始化器可以按任何顺序出现,任何未明确指定的成员都将被初始化为零。

关于c++ - 如何一次将多个值分配给一个结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9269825/

相关文章:

c++ - 为什么linux中有多个fcntl.h?

c++ - 函数指针指向成员函数

c++使用fstream从二进制文件中读取字符串

c - Array of Linked List,移动到下一个节点错误;

c - 消息的 Adler32 + adler 总和是否为零(如 CRC32)

c - 在内核模块中创建链表

javascript - 如何使用 node.js 中的 C++ 库?

javascript - 从 C++(Node.js 插件)调用 C 库时出现 "Symbol Lookup Error"

struct - 在 Rust 中动态生成格式化程序的宏

c - 在不知道元素数量的情况下迭代准备好的结构体数组 c 的正确简单声明