IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

结构体初始化的方法

Vimer 2009-12-03 21:33:49 累计浏览 3,293 次
本机暂存

最近项目小组在去除代码中的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. 等了十年的 Go 链式管道,终于来了:seq 让你像写 Scala 一样写 Go (2026-06-25 18:38:18)
  2. Go 实验特性详解 (2026-06-21 10:05:27)
  3. amd64 微架构级别对 Go 程序性能提升多少? (2026-06-21 09:38:49)

查看更多 后端 文章 →

建议继续学习

  1. 如何学好C++语言 (累计阅读 10,449)
  2. Emacs配置C/C++-mode的代码智能提示和自动补全 (累计阅读 10,414)
  3. colortail,让 tail 命令绚丽起来 (累计阅读 10,260)
  4. PHP程序的执行流程 (累计阅读 10,035)
  5. 在C++中实现foreach循环,比for_each更简洁! (累计阅读 9,500)
  6. 几个内存相关面试题(c/c++) (累计阅读 9,447)
  7. 一个大二学生有关如何成为一名软件工程师的疑问及答复 (累计阅读 9,181)
  8. 关于使用STL的红黑树map还是hashmap的问题 (累计阅读 8,876)
  9. 浅析C++多线程内存模型 (累计阅读 8,803)
  10. nginx自定义模块编写-实时统计模块 (累计阅读 8,734)