为了账号安全,请及时绑定邮箱和手机立即绑定

如何根据C语言标准初始化结构

如何根据C语言标准初始化结构

C
陪伴而非守候 2019-06-14 09:52:42
如何根据C语言标准初始化结构我想初始化一个struct元素,在声明和初始化中拆分。这就是我所拥有的:typedef struct MY_TYPE {   bool flag;   short int value;   double stuff;} MY_TYPE;void function(void) {   MY_TYPE a;   ...   a = { true, 15, 0.123 }}的局部变量,这是声明和初始化一个局部变量的方式吗?MY_TYPE按照C编程语言标准(C89,C90,C99,C11等)?或者有什么更好的或者至少是在工作?更新最后,我有一个静态初始化元素,根据需要设置每个子元素。
查看完整描述

3 回答

?
料青山看我应如是

TA贡献1772条经验 获得超8个赞

你可以用复合文字..根据该页面,它在C99中工作(也可以计算为Ansi C).

MY_TYPE a;a = (MY_TYPE) { .flag = true, .value = 123, .stuff = 0.456 };...a = (MY_TYPE) { .value = 234, .stuff = 1.234, .flag = false };

初始化器中的名称是可选的;您还可以编写:

a = (MY_TYPE) { true,  123, 0.456 };...a = (MY_TYPE) { false, 234, 1.234 };


查看完整回答
反对 回复 2019-06-14
?
森栏

TA贡献1810条经验 获得超5个赞

我看你们已经收到了关于ANSIC 99的答案,所以我会对ANSI C89发表意见。Ansi C 89允许您以这样的方式初始化结构:

typedef struct Item {
    int a;
    float b;
    char* name;} Item;int main(void) {
    Item item = { 5, 2.2, "George" };
    return 0;}

需要记住的一件重要事情是,在初始化结构中的一个对象/变量时,它的所有其他变量都将初始化为默认值。

如果不初始化结构中的值,所有变量都将包含“垃圾值”。

祝好运!


查看完整回答
反对 回复 2019-06-14
  • 3 回答
  • 0 关注
  • 479 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信