结构体的初始化

早先在看开源代码中学到的一个初始化结构体的技巧,今天刚刚用上。 特意整理了一下。

struct _A
{
 int a;
 int b;
}

早先我所采用的方法(方法一)
struct _A A = {0};
A.a = 1;
A.b = 2;

 

现在所采用的方法(方法二),是从开源代码中所学会的, 定义结构体的同时初始化结构体成员变量

struct _A A = {.a = 1, .b = 2};

相比较方法一, 方法二明显简洁,清晰明了,唯一的不足之处在于增加了学习的成本,但我想这也是完全可以接受的。

 


PS:反汇编了一下两者的代码, 证明了我的猜想方法二的执行效率也明显高于方法一。
我不是效率偏执流,对我来说,程序的可读性,可维护性更为重要。


贴一下方法一的汇编代码。

 

 

 

这里同时也解决了我的另一个疑问,struct _A aaa = {0}; 到底是对结构体成员的第一个成员赋值为0,还是将所有的成员赋值为0?

从汇编代码中movl $0 -8(%ebp) movl $0 -4(%ebp) 两行来看,很明显是将所有的成员赋值为0。

 

 

 

 

方法二

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值