空值初始化结构体问题

多数人喜欢通过memset去初始化结构体,但如果一次使用,可以在定义的时候通过{}实现
使用{}可以直接在定义时置空组数或结构体,该特性g++/gcc编译器普遍都支持

测试代码:


#include <stdio.h>

typedef struct _st_a_i {
        short a;
        int b;  
        char c[8];
        unsigned char d; 
} st_a_i;

typedef struct _st_a {
        short a;
        int b;
        char c[8];
        unsigned char d;
        st_a_i st_i;
} st_a;

int main()
{
        st_a a = {};
        st_a b;

        printf("%d %d\n", a.st_i.d, b.st_i.d);
        return 0;
}


结果:


@ubuntu:~/test$ ./a.out
0 208
@ubuntu:~/test$ ./a.out
0 208
@ubuntu:~/test$ ./a.out
0 64
@ubuntu:~/test$ ./a.out
0 0
@ubuntu:~/test$ ./a.out
0 64
@ubuntu:~/test$ ./a.out
0 112
@ubuntu:~/test$ ./a.out
0 48
@ubuntu:~/test$ ./a.out
0 64
@ubuntu:~/test$ ./a.out
0 32
@ubuntu:~/test$ ./a.out
0 176
@ubuntu:~/test$ ./a.out
0 80


 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值