【发布时间】:2011-06-14 05:22:24
【问题描述】:
typedef struct {
int hour;
int min;
int sec;
} counter_t;
在代码中,我想在不显式初始化每个成员变量的情况下初始化这个结构的实例。也就是说,我想做这样的事情:
counter_t counter;
counter = {10,30,47}; //doesn't work
10:30:47
而不是
counter.hour = 10;
counter.min = 30;
counter.sec = 47;
不记得这个的语法,也没有立即从谷歌上找到一种方法。
谢谢!
【问题讨论】:
-
是的,如果我像
counter_t counter = {10,30,47}那样在同一行中进行声明,它看起来很有效,但如果声明在此分配之前完成,则不会。 -
@Oli:为什么会这样?正如所写,这是一项任务,而不是初始化。
-
@sth:问题好像被修改了……
-
正如史蒂夫的回答中提到的,你所拥有的是 assignment 而不是 initialization (正如你在标题中所说)。 C 比 C++ 更模糊了这些界限,但正如 Oli 所指出的,初始化(在 C 和 C++ 中)已经按照您的预期工作。
-
@Oli @sth:是的,我想知道您是否在修改之前看到过它。在很短的一段时间内(大约一分钟),我得到了声明的工作版本,即
counter_t counter = {10,30,47};。当我意识到它确实有效时,我改变了它:)。无论如何,我真正想要的是将它与赋值分开声明。 @Fred Nurk:好电话,我将标题更改为“分配”。谢谢!