关于数组局部初始化的一些延伸

今天在做Cici的一个Code review的时候,她的一个数组初始化用法让我有点疑惑,大体是这么用的:


char buffer[16] = {0};

她这段代码的目的倒是很好理解,就是把buffer初始化为全为0的内存空间,但是,如果让我这么做的话,我会用memset,而且很多其他程序员也会是这么做的。我自己在VS2010上试了下这种用法,确实也是全部初始化为0了。但仍然很困惑,不知道这种方式会不会有什么风险,于是查阅了一些资料。


在这篇博文中:http://blog.csdn.net/sibylle/article/details/2026915 对这种情况作了详尽的分析,在目前主流的编译器中,基本都支持这种设定,但是标准文档中却并没做类似规定,在IBM官方文档中http://publib.boulder.ibm.com/infocenter/comphelp/v8v101/index.jsp?topic=/com.ibm.xlcpp8a.doc/language/ref/aryin.htm 也是这么说的,因此可不可以看成是一种不成文的标准呢?


尽管如此,我个人还是建议用memset来实现这个功能,因为如果过于依赖编译器的自动行为,难免会出现预料不到的情况。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值