<分区>
使用普通数组比使用指针数组有什么优势(反之亦然)?
什么时候应该使用指针数组,什么时候应该避免使用它?
在大学里,每个人似乎都对指针很着迷。我知道 std::vector 是一个简单的出路,但在大学里禁止使用。我们现在被要求在没有 STL 的情况下解决问题。
我从 SO (link) 得到了答案,但答案让我难以理解。
例如:使用 int array[]
更好还是使用 int* parray[]
更好?
<分区>
使用普通数组比使用指针数组有什么优势(反之亦然)?
什么时候应该使用指针数组,什么时候应该避免使用它?
在大学里,每个人似乎都对指针很着迷。我知道 std::vector 是一个简单的出路,但在大学里禁止使用。我们现在被要求在没有 STL 的情况下解决问题。
我从 SO (link) 得到了答案,但答案让我难以理解。
例如:使用 int array[]
更好还是使用 int* parray[]
更好?
最佳答案
int array[]
是一个 int 数组。这意味着它将保存多个整数的集合。将其想象成一个包含多个整数的占位符。当你在 C++ 中使用 int array[]
时,你必须在使用之前给它一个固定的大小:
int array[5]
并且尺寸会放在方括号[]
里面,否则编译不通过,报错。使用这个普通数组的缺点是你必须先知道数组的大小,否则程序将无法运行。如果您的估计尺寸与实际使用尺寸不同怎么办?如果您的估计值比实际值大得多怎么办?这会消耗你大量的内存。
int *array[]
在 C++ 中无效。如果你想做一个指向数组的指针,而不需要在运行时知道数组的大小。这样做:
int *p;
int size;
cout << "How big is the size ?";
cin >> size;
p = new int[size];
那样的话,你不需要在运行前就知道size
的值,从而不会浪费内存。
关于c++ - 普通数组与指针数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24707357/