怎样把结构数组初始化为0?

screen12 2014-11-15 10:06:52
比如这样的一个结构数组:
struct CAND
{
int hznum;
TCHAR hz[260];
int AllWidth;
PointF ptfts;
TCHAR ts[256];
int tsnum;
PointF ptfhz;
RECT rc;
}cand[10]={{0}};

我在最后的定义处写道:cand[10]={{0}}; 这是初始化第一个结构,但我听说只要初始化第一个结构,后面的结构全部会被置为0

但我调试的结果却发现:只有第一个结构初始化为0了,别的结构都没有。

怎样把全部10个结构都在定义的时候初始化为0呢?

...全文
5185 16 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
wxgchrome123 2014-11-15
  • 打赏
  • 举报
回复
bzero memset
w74839520 2014-11-15
  • 打赏
  • 举报
回复
用结构体,定义一个变量,用变量来初始化
GQB1226 2014-11-15
  • 打赏
  • 举报
回复
赞同九楼的方法
screen12 2014-11-15
  • 打赏
  • 举报
回复
引用 2 楼 snowmagic 的回复:
cand[10] = {0}
这个我试了一下,还是只能把第一个结构(各个字段)初始化为0,其他9个结构仍然没有初始化。
正在无聊中 2014-11-15
  • 打赏
  • 举报
回复
干脆设成全局变量好了。 像这么“巨大”的数组栈不一定能装得下
screen12 2014-11-15
  • 打赏
  • 举报
回复
引用 1 楼 runner90 的回复:
memset(&cand, 0, sizeof(CAND));
这个是可以,但我希望在定义的时候初始化。
碼上道 2014-11-15
  • 打赏
  • 举报
回复
数组使用memset比较好。其实初始化使用{0}也是使用的memset
snowmagic 2014-11-15
  • 打赏
  • 举报
回复
cand[10] = {0}
  • 打赏
  • 举报
回复
memset(&cand, 0, sizeof(CAND));
williamhong 2014-11-15
  • 打赏
  • 举报
回复 2
1. 定义成全局的或者static的 2. 用0初始化第一个内部为0,再用这个变量初始化其它的, 类似int aa[2] = {0,aa[0]};
taodm 2014-11-15
  • 打赏
  • 举报
回复
你以后就会在血泪经验中明白调试器就是一个垃圾
screen12 2014-11-15
  • 打赏
  • 举报
回复
引用 10 楼 taodm 的回复:
printf/cout看到的才是真实,别太相信调试器。 [quote=引用 8 楼 screen12 的回复:] [quote=引用 7 楼 taodm 的回复:] 楼主用的什么编译器?怎么确认的没有初始化?
VS2008,我是调试的方法确定没有初始化的。因为调试状态下,查看发现cand[0]里面各个变量全部被清为0,但从cand[1]到cand[9],里面的变量是各种各样的值。因为本来定义的就是局部变量,其值是不确定的。 按照道理讲,初始化第一个结构,后面的都应该清0,结果却不是,令人郁闷。[/quote][/quote] 什么?调试显示的变量值都不一定对?我有点震惊了。
taodm 2014-11-15
  • 打赏
  • 举报
回复
printf/cout看到的才是真实,别太相信调试器。
引用 8 楼 screen12 的回复:
[quote=引用 7 楼 taodm 的回复:] 楼主用的什么编译器?怎么确认的没有初始化?
VS2008,我是调试的方法确定没有初始化的。因为调试状态下,查看发现cand[0]里面各个变量全部被清为0,但从cand[1]到cand[9],里面的变量是各种各样的值。因为本来定义的就是局部变量,其值是不确定的。 按照道理讲,初始化第一个结构,后面的都应该清0,结果却不是,令人郁闷。[/quote]
「已注销」 2014-11-15
  • 打赏
  • 举报
回复 1
struct a
{
  int a;
  int b[10];
}
struct a tmp[10];
memset(tmp,0 ,10 * sizeof(struct a));
screen12 2014-11-15
  • 打赏
  • 举报
回复
引用 7 楼 taodm 的回复:
楼主用的什么编译器?怎么确认的没有初始化?
VS2008,我是调试的方法确定没有初始化的。因为调试状态下,查看发现cand[0]里面各个变量全部被清为0,但从cand[1]到cand[9],里面的变量是各种各样的值。因为本来定义的就是局部变量,其值是不确定的。 按照道理讲,初始化第一个结构,后面的都应该清0,结果却不是,令人郁闷。
taodm 2014-11-15
  • 打赏
  • 举报
回复
楼主用的什么编译器?怎么确认的没有初始化?

70,023

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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