技术头条 - 一个快速在微博传播文章的方式     搜索本站
您现在的位置首页 --> 其他 --> 结构体初始化的方法

结构体初始化的方法

浏览:2329次  出处信息

最近项目小组在去除代码中的warning,在修正代码的过程中看到了对结构体不正确的初始化方式:
假设有一个如下的struct定义:

struct astruct
{
    int a;
    int b;
};
struct astruct test = {0};

即使astruct中都是基础类型的成员这样的初始化话也是不正确的。
这种初始化仅仅是把a变量设置为了0,而未对b变量做初始化。
产生这样错误的原因,大概是收到数组初始化的影响。数组是可以这么初始化话的,而且初始化的值只能是0!
对结构体的初始化,可以有一下三种。

struct test
{
    int a;
    int b;
};
int main()
{
    struct test t1 = {0, 0}; 
    struct test t2 =
        .a=2
        .b=3
    };  
    struct test t3 =
        a:12345,
        b:567890
    };  
    printf(“t1.a = %d, t1.b = %d\n”, t1.a, t1.b);
    printf(“t2.a = %d, t2.b = %d\n”, t2.a, t2.b);
    printf(“t3.a = %d, t3.b = %d\n”, t3.a, t3.b);
    return 0;
}

第一种使我们最常见的方式,2,3中是gcc的扩展,非标准。

建议继续学习:

  1. C语言结构体里的成员数组和指针    (阅读:4820)
  2. Nginx启动初始化过程(一)    (阅读:4466)
  3. Linux系统初始化优化推荐策略    (阅读:3175)
  4. Nginx启动初始化过程(二)    (阅读:2447)
  5. 在 C++ 中引入 gc 后的对象初始化    (阅读:2169)
  6. c、cpp中使用匿名结构体、类定义数组    (阅读:2169)
  7. mysql innodb 文件相关的三个重要结构体    (阅读:2116)
  8. PHP类中变量的初始化只能是定值    (阅读:1879)
  9. 根据成员地址获取结构体变量    (阅读:1689)
  10. HAProxy几个重要的结构体    (阅读:1626)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
© 2009 - 2024 by blogread.cn 微博:@IT技术博客大学习

京ICP备15002552号-1