多数人喜欢通过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