2014-07-11 44 views
0

在指針數組上使用正常數組有沒有什麼優勢(反之亦然)?正常數組vs指針陣列

什麼時候應該使用指針數組,什麼時候應該避免它?

在大學裏,每個人似乎都對指針感到瘋狂。我知道std :: vector是一個簡單的方法,但是禁止在大學裏使用。現在我們被要求解決沒有STL的東西。

我從SO (link)得到了答案,但是答案讓我頭痛。

例如:是使用int array[]更好還是int* parray[]好?

+6

什麼是指針數組? – Brian

+1

順便說一句,如果他們不會讓你在C++課程中使用C++標準庫,他們基本上會讓你編寫C. – Brian

+0

指針數組聽起來像是一個多維數組...我的意思是:'int * pointer = new int(5)'vs'int array [5]'? – Max

回答

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運行時間之前的值,因此你不會浪費內存。

+0

AAAH!現在更有意義。我正在等待這個答案! –

+0

(這個答案是怎麼回到這裏的?以前沒有關閉過) – deviantfan

+0

@Hoang Minh:你的答案缺少一個很好的部分。 – deviantfan