结构体初始化的方法
浏览: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的扩展,非标准。
建议继续学习:
- C语言结构体里的成员数组和指针 (阅读:4820)
- Nginx启动初始化过程(一) (阅读:4466)
- Linux系统初始化优化推荐策略 (阅读:3175)
- Nginx启动初始化过程(二) (阅读:2447)
- 在 C++ 中引入 gc 后的对象初始化 (阅读:2169)
- c、cpp中使用匿名结构体、类定义数组 (阅读:2169)
- mysql innodb 文件相关的三个重要结构体 (阅读:2116)
- PHP类中变量的初始化只能是定值 (阅读:1879)
- 根据成员地址获取结构体变量 (阅读:1689)
- HAProxy几个重要的结构体 (阅读:1626)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
扫一扫订阅我的微信号:IT技术博客大学习
<< 前一篇:如何在AIX中编译Perl
后一篇:Teleport垃圾代码tppabs的清理 >>
文章信息
- 作者:Dante 来源: Vimer
- 标签: 初始化 结构体
- 发布时间:2009-12-03 21:33:49
建议继续学习
近3天十大热文
- [66] Oracle MTS模式下 进程地址与会话信
- [65] 如何拿下简短的域名
- [65] Go Reflect 性能
- [59] 【社会化设计】自我(self)部分――欢迎区
- [59] IOS安全–浅谈关于IOS加固的几种方法
- [59] 图书馆的世界纪录
- [59] android 开发入门
- [53] 视觉调整-设计师 vs. 逻辑
- [47] 界面设计速成
- [47] 读书笔记-壹百度:百度十年千倍的29条法则