一直以为数组初始化应该用memset():
char a[128];
memset(a, 0, sizeof(a));
以为部分初始化仅仅是初始化数组头部元素:
char a[128] = {0};
今有同事纠正,“= {0}”表示全部置0.
经试验,果然可以这样全部置0.
反汇编码中可以看到memset()的调用。
如果没有任何初始化,内容是未初始化的。
只要有部分初始化,数组的剩余部分会自动初始化为0.
规则详见:
http://www.c-faq.com/decl/initval.html
When an automatic array or structure has a partial initializer,
the remainder is initialized to 0, just as for statics.
其中的脚注中又说,K&R2的早期版本中,对部分初始化的说明是错误的。
Early printings of K&R2 incorrectly stated that partially-initialized
automatic aggregates were filled out with garbage.
(金庆的专栏)
数组部分初始化
原创
©著作权归作者所有:来自51CTO博客作者wx648abf25141f7的原创作品,请联系作者获取转载授权,否则将追究法律责任
上一篇:网游自适应数值平衡
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章