局部数组初始化问题

lghe001 2012-11-20 11:57:51
局部数组可以这样初始化:char tmp[1300] = {0};结果是数组的元素全部是0,如果是char tmp[1300] = {1},数组的元素除第一个是1外全是0.这个是语言的特性还是编译器的?
...全文
377 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
whiteyundd 2012-11-23
  • 打赏
  • 举报
回复
编译器的原因,一般编译器都这样处理的。
ForestDB 2012-11-23
  • 打赏
  • 举报
回复
如果不放心的话,最好的做法应该是“做好全部空间的初始化”;如memset或者loop赋初值。
ForestDB 2012-11-23
  • 打赏
  • 举报
回复
个人看过的资料都说是标准定义行为。 不过就算不是,但如果所有的编译器都支持(我用过的都支持),从某种角度上来说,就是“事实上的标准”。
yleek 2012-11-21
  • 打赏
  • 举报
回复
引用 4 楼 anhuizhuanjiao 的回复:
初始化值的个数可少于数组元素个数.当初始化值的个数少于数组元素个数时,前面的按序初始化相应值, 后面的初始化为0。如果不对数组进行初始化,即在定义的同时没有用列表初始化,那么局部数组的值就取决于编译器而对程序员来说就是不可预料的了。 楼主可以看下这篇文章 http://blog.csdn.net/sibylle/article/details/2026915 ……
4楼正解 +1
sunwairater 2012-11-20
  • 打赏
  • 举报
回复
跟编译器有关。 不同编译器有不同的处理方式。
转角天边 2012-11-20
  • 打赏
  • 举报
回复
初始化值的个数可少于数组元素个数.当初始化值的个数少于数组元素个数时,前面的按序初始化相应值, 后面的初始化为0。如果不对数组进行初始化,即在定义的同时没有用列表初始化,那么局部数组的值就取决于编译器而对程序员来说就是不可预料的了。 楼主可以看下这篇文章 http://blog.csdn.net/sibylle/article/details/2026915
lghe001 2012-11-20
  • 打赏
  • 举报
回复
引用 2 楼 longburulin 的回复:
个人认为是语言吧 反正没有赋值的就赋0作为初始化
局部变量的话,不初始化未必是0 我只是想知道是语言的特性呢还是编译器的,我这只装了VC6,其他编译器不敢确定
longburulin 2012-11-20
  • 打赏
  • 举报
回复
个人认为是语言吧 反正没有赋值的就赋0作为初始化
breakfisher 2012-11-20
  • 打赏
  • 举报
回复
实际上都只是将数组的第一个元素置零了,但由于未初始化为0的元素系统会自动初始化为0,所以产生的效果是所以元素都被置零了。 但是不要误认为{n}的作用是初始化数组的所有元素值为n。 需要强调的是,程序员至少必须把数组元素的第一个数组元素初始化为0,才能使剩余的元素自动初始化为0。也就是说,定义数组后必须要初始化,不要认为不初始化,系统就会自动初始化为0。实际上,把数组初始化为0是在编译时完成的。如果不初始化,那么各数组元素的值将是随机数。
hushoubo 2012-11-20
  • 打赏
  • 举报
回复
似乎是编译器,没研究过,一般都是这样写的 char szBuffer[32] = { 0 };
SKATE11 2012-11-20
  • 打赏
  • 举报
回复
确实是这样的
AndyZhang 2012-11-20
  • 打赏
  • 举报
回复
引用 7 楼 lghe001 的回复:
引用 6 楼 zhang20072844 的回复:这个就是C语言为设标准的地方,编译器可以自由设定, 语言标准?那应该就是编译器都得这样实现吧,怎么又说“编译器可以自由设定”呢?
因为C语言有自己的缺陷,所以iso或者K&R当时没有给出相应的标准,所以,编译器没有标准可循,可以自己设定。 就像csdn上好多未定义的那些问题,比如说++的问题等,编译器大多数都是有标准可循的 建议你看看C专家编程,或者c缺陷和陷阱
AnYidan 2012-11-20
  • 打赏
  • 举报
回复
记得是标准,好像 supermage 的博客提到过
lghe001 2012-11-20
  • 打赏
  • 举报
回复
引用 6 楼 zhang20072844 的回复:
这个就是C语言为设标准的地方,编译器可以自由设定,
语言标准?那应该就是编译器都得这样实现吧,怎么又说“编译器可以自由设定”呢?
AndyZhang 2012-11-20
  • 打赏
  • 举报
回复
这个就是C语言为设标准的地方,编译器可以自由设定,

69,373

社区成员

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

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