读书人

对一个结构体变量赋值为{0},这个变量里

发布时间: 2012-03-11 18:15:39 作者: rapoo

对一个结构体变量赋值为{0},这个变量里面的所以结构体成员的值均= 0 吗
有结构体
typedef struct LsAfccDataWriteReqTag
{
TaskId taskId;
Int32 dataID;
Int32 offset;
Int8 oprt;
union LSAFCC_Data data;
}
LsAfccDataWriteReq;
定义变量
LsAfccDataWriteReq req = {0};

这样req的各个变量的值=0吗

[解决办法]
相当于
memset(&req, 0, sizeof(LsAfccDataWriteReq));
[解决办法]
是的
对数组也是可以这样初始化为0

[解决办法]
如果a是全局的或者静态的编译器就默认初始化为0, 如果局部的(栈上分配)则为随机值。

另外,

typedef struct LsAfccDataWriteReqTag
{
TaskId taskId;
Int32 dataID;
Int32 offset;
Int8 oprt;
union LSAFCC_Data data;
}
LsAfccDataWriteReq;

如果在栈上分配这个结构并且只初始化第一个字段,如:
main()
{
...

LsAfccDataWriteReq req = {1};

...
}
,那么req剩下的字段默认初始化为0(不是随机值!)



[解决办法]
这些变量的默认值有没有和编译器相关
====================================
和编译器无关
语言本身的规定

读书人网 >C++

热点推荐