我可以在初始化 struct Foo 时这样做:
Foo foo = {bunch, of, things, initialized};
但是,我不能这样做:
Foo foo;
foo = {bunch, of, things, initialized};
那么,两个问题:
- 为什么我不能做后者,前者是只用于初始化的特殊构造函数吗?
我怎样才能做类似于第二个例子的事情,即在一个结构已经被初始化之后,在一行代码中为它声明一堆变量?我试图避免对具有许多变量的大型结构执行此操作:
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/