誰能解釋以下兩種形式,什麼之間的區別每個做:()和[]動態分配有什麼區別?
int *p = new int[5];
和
int *p = new int(5);
查詢
1)什麼是我們在兩種情況下分配即整數或數組?
2)兩種情況下分配後的初始值是多少?
3)和參考從哪裏可以找到有關此
誰能解釋以下兩種形式,什麼之間的區別每個做:()和[]動態分配有什麼區別?
int *p = new int[5];
和
int *p = new int(5);
查詢
1)什麼是我們在兩種情況下分配即整數或數組?
2)兩種情況下分配後的初始值是多少?
3)和參考從哪裏可以找到有關此
int *p = new int[5];
分配一個長度爲5的整數「陣列」,它返回一個指向的5個連續存儲器塊的開始,其中的每一個可以持有int
。
int *p = new int(5);
分配一個指向單個整數初始化爲值5
一個新表達的語法如下:
new
在new int[5]
,類型是int[5]
並且沒有初始化。因此,分配了一個數組5 int
s,它們不被初始化,並返回指向第一個元素的指針。
在new int(5)
,類型爲int
和初始化是(5)
,所以一個int
被分配,它與值5(就像在int x(5);
)初始化,並返回一個指向它的指針。
方括號用於表示其元素的數組。 所以在此聲明
int *p = new int[5];
分配有未初始化5個整數元素的數組。與定義
int a[5];
比較在這份聲明中
int *p = new int(5);
分配有int類型的對象,它是由5初始化。以下定義
int x = int(5);
或簡單地
int x = 5;
在它分配大小5的整數數組在這種情況下的第一個實例相比較它的陣列中的元件是未初始化的。
在第二種情況下它分配與價值5
引用一個整數
http://www.cplusplus.com/reference/new/operator%20new/ http://www.cplusplus.com/reference/new/operator%20new[]/
在這裏,我將回答一個
問題1所有的一個問題:什麼我們是在這兩種情況下分配,即整數或數組?
int *p = new int[5]; // you are allocating an array
int *p = new int(5); // you are allocating an integer
問題2:兩種情況下分配後的初始值是多少?
int *p = new int[5]; // Initially there will be random value on all indexes
int *p = new int(5); // Initially value will be 5
問題3:從哪裏可以找到關於此的參考?
檢查以下鏈接
http://www.cplusplus.com/doc/tutorial/dynamic/
http://en.wikipedia.org/wiki/Initialization_%28programming%29
「*他們不會被初始化。*」 ......迂腐來說,他們實際上是默認初始化它在的情況下,內置類型意味着未初始化。 – Nawaz 2014-09-03 04:33:25
@Nawaz由於與C的兼容性,這僅適用於類或方法範圍之外不可訪問的類型。此外,它們不是默認初始化的,而是初始化爲零。 – xvdiff 2014-09-03 05:39:44
@xvdiff:你錯了。搜索*「默認初始化,零初始化和值初始化」*在這個網站上,你會得到很多討論它們的話題。 – Nawaz 2014-09-03 06:13:28