结构的部分初始化?

用户名

是否可以静态初始化结构的一部分?

我的结构:

   struct data {
    char name[20];
    float a;
    int b;
    char c;
};

初始化和打印时:

struct data badge = {"badge",307};
printf("%s,%d\n", badge.name, badge.b);

这将打印出“徽章”,而不是“ 307”。

我如何才能使用它char name[20]int b忽略它float a

聚丙烯

您可以使用@sps建议的C99指定的初始化程序:

struct data badge = {.name = "badge", .b = 307};

但是在C89中,无法仅初始化结构的某些成员。因此,您必须执行以下操作:

struct data badge = {"badge", 0.0, 307, 0};

注意,即使使用指定的初始化程序,未显式初始化的成员也将被初始化为零。因此,以上两个都是等效的。

但是,使用指定的初始化程序,您无需显式初始化它(想象一下,如果您的结构具有100个成员,并且只想为其中的2个成员提供一个缩写,例如您的示例),并使代码也更易于阅读。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章