[C/C++]_[初级]_[关于数组的初始化问题]

场景

1.我们知道栈上创建的POD数组可以使用 {0}初始化,

<< C++ Primer 3th Edition >> 第3.9部分, 数组.

如果指定了维数 那么初始化列表提供的元素的个数不能超过这个值,否则,将导致编译错误.
如果指定的维数大于给出的元素的个数 那么没有被显式初始化的元素将被置为 0.

2.对于C++ new 出来的free store数组new int[5] 如何进行初始化是一个头疼的问题. 因为大部分书里也没提到, << C++ Primer 3th Edition >> 也只是说 new 出来的数组需要遍历每个元素进行初始化. 可以这样岂不是太麻烦了? C++ 有一个
std::fill_n 来初始化, 但是它应该也是和指针一样的操作方式, +1递增和赋值, 它试用于POD数组或非POD数组. 可以也需要两步, 先声明数组后调用 std::fill_n,有没有一步过的?答案是有的. 对于POD类型数组 new int[5](),最后加一个无参数括号即可初始化new POD数组, 原因可以查看下边的说明. 参考里也有stackoverflow的说明, 但是没有指出规范里的哪部分. 所以我找了下规范, 相当难找.

例子

void TestArray()
{
    std::cout << 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Peter(阿斯拉达)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值