如何分配一个C结构内联?
typedef struct { int hour; int min; int sec; } counter_t;
而在代码中,我想初始化这个结构的实例,而不显式初始化每个成员variables。 也就是说,我想要做一些事情:
counter_t counter; counter = {10,30,47}; //doesn't work
10:30:47
而不是
counter.hour = 10; counter.min = 30; counter.sec = 47;
不要回想这个语法,并没有立即find一个方法来做到这一点从谷歌search。
谢谢!
初始化:
counter_t c = {10, 30, 47};
分配:
c = (counter_t){10, 30, 48};
后者被称为“复合文字”。
为了可维护性,我更喜欢带有明确标识variables的列表语法,如下所示:
counter_t counter = {.hour = 10, .min = 30, .sec = 47};
或者返回内联,例如:
return (struct counter_t){.hour = 10, .min = 30, .sec = 47};
我可以想象一个场景,其中声明variables的顺序是变化的,如果你没有明确标识你的variables,你将不得不通过所有的代码来修改variables的顺序。 这样,我认为它更清洁,更具可读性