2010-12-20 83 views
2

創建數組可以通過以下兩種方式完成嗎?但並不是所有的數組都是數組地址的開始,併爲該類型分配足夠的字節。所以我的問題是使用指向字節數組的指針還是僅使用第一個選項有什麼區別?指針數組問題

int numbers[10]; 

int* num = new int[10]; 
or 
int* num = new int(10); 
+0

有幾個重複的,但我懶得去找到他們。 – dmckee 2010-12-20 01:44:15

回答

4

你的第二個版本聲明瞭一個指向一個初始化爲10的整數的指針。這不是一個數組。

+0

什麼是int * num [10];一個指向10個元素數組的指針? – RoR 2010-12-20 01:44:23

+2

int * num [10];給出一個包含十個int指針的數組。 – 2010-12-20 01:46:51

4

int array[10];有兩種不同的行爲。在函數內部使用,它將在堆棧上分配10個未初始化的整數。在函數之外,它將在BSS內存中分配10個零初始化的整數。

new int[10];在堆上分配10個未初始化的整數。

new int(10);分配在堆上一個int,其值10

+0

'int數組[10]'在參數列表中有第三個含義。有**和只有那裏**,它只是'int * array'的句法醋。也就是說,你不能在C++中按值傳遞數組。 – fredoverflow 2010-12-20 09:11:44