对一个结构体变量赋值为{0},这个变量里面的所以结构体成员的值均= 0 吗,该如何处理
对一个结构体变量赋值为{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(不是随机值!)
------解决方案--------------------
这些变量的默认值有没有和编译器相关
====================================
和编译器无关
语言本身的规定
有结构体
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(不是随机值!)
------解决方案--------------------
这些变量的默认值有没有和编译器相关
====================================
和编译器无关
语言本身的规定