0
我想在我的項目中使用動態數組,但我不明白爲什麼我能做到這一點:C++動態數組 - 爲什麼我能夠做到這一點?
int *a;
a = new int[1];
a[100]=2;
cout << a[100] << endl;
我的意思是,我創建數組「A」可以儲存1元,那麼,爲什麼我能夠使用數組的第100個元素嗎?它不應該存在,應該嗎?
我想在我的項目中使用動態數組,但我不明白爲什麼我能做到這一點:C++動態數組 - 爲什麼我能夠做到這一點?
int *a;
a = new int[1];
a[100]=2;
cout << a[100] << endl;
我的意思是,我創建數組「A」可以儲存1元,那麼,爲什麼我能夠使用數組的第100個元素嗎?它不應該存在,應該嗎?
一些基本的東西:
你的數組存儲在內存中,每個單元都有自己的地址。你的數組名稱a
指向它開始的內存中的位置。 a[0]
,a[1]
或a[index]
與您輸入的內容相同*(a+index)
- 它將/置位值置於內存中的(a + index)索引下。
事實上,即使您的變量(數組等)沒有使用這些地址,也可以覆蓋這些地址。當然你不應該這樣做,但你的編譯器不會發瘋(你也可以聲明可變長度數組,編譯器可能不關心,但你應該知道這一點)。
我試圖讓它儘可能簡單,沒有必要詳細說明,我相信。
同樣的原因,即使「在籃球中,你不能拿着球跑動」,你也可以在籃球中接球並逃跑。 –
因爲你被允許做不起作用的東西。你正在訪問你不應該訪問的內存 - 所有的投注都關閉 - 它可能看起來像是有效的,但它確實沒有。 – jpw
@KerrekSB輝煌。 :-) – skypjack