我可以在 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),这将起作用。
Update:在现代版本的 C(但不是 C++)中,您还可以使用带有指定初始值设定项的复合文字,如下所示:
foo = (Foo){ .bunch = 4, .of = 2, .things = 77, .initialized = 8 };
“.”之后的名称。应该是您要初始化的结构成员的名称。这些初始值设定项可以按任何顺序出现,任何未明确指定的成员都将被初始化为零。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)