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

winner8080 2007-11-28 01:51:53
有结构体
typedef struct LsAfccDataWriteReqTag
{
TaskId taskId;
Int32 dataID;
Int32 offset;
Int8 oprt;
union LSAFCC_Data data;
}
LsAfccDataWriteReq;
定义变量
LsAfccDataWriteReq req = {0};

这样req的各个变量的值=0吗
...全文
3198 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
lzj_fighting 2007-12-24
  • 打赏
  • 举报
回复
这些变量的默认值有没有和编译器相关
====================================
和编译器无关
语言本身的规定
winner8080 2007-12-24
  • 打赏
  • 举报
回复
楼上的,
这些变量的默认值有没有和编译器相关
比如说某个编译器把分配再栈上的req的变量全自己初始化为0
谢谢你了
winner8080 2007-12-24
  • 打赏
  • 举报
回复
没人回答吗
songjiegoodyear 2007-12-12
  • 打赏
  • 举报
回复
数组同样是这样,如果栈上的数组没有初始化,则为随机值,如果初始化了第一个变量或者前几个变量,则后面的变量默认初始化为0
songjiegoodyear 2007-12-12
  • 打赏
  • 举报
回复
如果a是全局的或者静态的编译器就默认初始化为0, 如果局部的(栈上分配)则为随机值。

另外,

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

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

LsAfccDataWriteReq req = {1};

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


winner8080 2007-12-12
  • 打赏
  • 举报
回复
谢谢各位了.

另外,
有下面的结构体
struct A
{
bool duan ;
};

定义一个A a;

我再代码中不初始化a
而直接使用a.duan
那么这个a.duan的默认值是什么啊
随机的吗
谢谢啊
马上就结贴
thecorr 2007-11-28
  • 打赏
  • 举报
回复
原来如此, 这是编译器完成的么
pptor 2007-11-28
  • 打赏
  • 举报
回复
是的
ckt 2007-11-28
  • 打赏
  • 举报
回复
是的
对数组也是可以这样初始化为0
ouyh12345 2007-11-28
  • 打赏
  • 举报
回复
相当于
memset(&req, 0, sizeof(LsAfccDataWriteReq));

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧