2016-05-30 62 views
0

我想在我的項目中使用動態數組,但我不明白爲什麼我能做到這一點:C++動態數組 - 爲什麼我能夠做到這一點?

int *a; 
a = new int[1]; 
a[100]=2; 

cout << a[100] << endl; 

我的意思是,我創建數組「A」可以儲存1元,那麼,爲什麼我能夠使用數組的第100個元素嗎?它不應該存在,應該嗎?

+10

同樣的原因,即使「在籃球中,你不能拿着球跑動」,你也可以在籃球中接球並逃跑。 –

+2

因爲你被允許做不起作用的東西。你正在訪問你不應該訪問的內存 - 所有的投注都關閉 - 它可能看起來像是有效的,但它確實沒有。 – jpw

+0

@KerrekSB輝煌。 :-) – skypjack

回答

1

一些基本的東西:
你的數組存儲在內存中,每個單元都有自己的地址。你的數組名稱a指向它開始的內存中的位置。 a[0],a[1]a[index]與您輸入的內容相同*(a+index) - 它將/置位值置於內存中的(a + index)索引下。

事實上,即使您的變量(數組等)沒有使用這些地址,也可以覆蓋這些地址。當然你不應該這樣做,但你的編譯器不會發瘋(你也可以聲明可變長度數組,編譯器可能不關心,但你應該知道這一點)。

我試圖讓它儘可能簡單,沒有必要詳細說明,我相信。

相關問題