c++ - 普通数组与指针数组

标签 c++ arrays pointers

<分区>

使用普通数组比使用指针数组有什么优势(反之亦然)?

什么时候应该使用指针数组,什么时候应该避免使用它?

在大学里,每个人似乎都对指针很着迷。我知道 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/

相关文章:

c++ - gcc 4.8 或更早版本对正则表达式有问题吗?

OSX10.8 上的 C++ Hello World 问题

javascript - jQuery Javascript 集团年复一年

c - 一些简单的指针问题

c - C中指针复制的问题

c++ - CFolderPickerDialog - 无 MFC

c++ - 32位整数中set bits的计数方法说明

c - 用 0-100 之间的数字填充数组

我不能从函数返回数组吗? C

c++ - 正确删除指针双端队列