首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

对一个结构体变量赋值为{0},这个变量里面的所以结构体成员的值均= 0 吗,该如何处理

2012-03-11 
对一个结构体变量赋值为{0},这个变量里面的所以结构体成员的值均 0 吗有结构体typedef structLsAfccDataW

对一个结构体变量赋值为{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(不是随机值!)



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

热点排行