在指针数组上使用普通数组是否有任何优势(反之亦然)?
我何时应该使用指针数组,何时应该避免使用它?
在大学里,每个人似乎都对指针感到疯狂。我知道std :: vector是一个简单的出路,但它禁止在大学里使用。我们现在要求解决没有STL的问题。
我从SO (link)得到了一个答案,但答案在我脑海中浮现。
例如:使用int array[]
更好还是int* parray[]
更好?
答案 0 :(得分:1)
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
的值,因此您不会浪费内存。