如果指针可以在运行时动态地改变数组的大小,为什么有必要用大小初始化数组?

Hol*_*lis 2 c++ arrays pointers dynamic

例如:

int* pArray;
pArray = new array[];
Run Code Online (Sandbox Code Playgroud)

代替:

int* pArray;
pArray = new array[someNumber];
Run Code Online (Sandbox Code Playgroud)

由于指针能够在运行时动态更改数组的大小,并且指针的名称指向数组的第一个元素,因此默认大小不应该是[1]?有谁知道幕后发生了什么?

Con*_*ius 10

由于指针能够在运行时动态更改数组的大小

这不是真的.除非您使用新大小分配新数组,否则它们无法更改大小.

如果你想拥有一个动态改变大小的类似数组的对象,你应该使用std::vector.

#include<vector>
#include<iostream>

...
std::vector<int> array;

array.push_back(1);
array.push_back(2);
array.push_back(3);
array.push_back(4);

std::cout << array.size() << std::endl; // should be 4
Run Code Online (Sandbox Code Playgroud)