[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 << ".........TestArray.........

你可能感兴趣的:(C++语言特性和标准库)