int test[3] = {1,2,3};
cout<<test[3]<<endl;
// this will get a error
int test[3] = {1,2,3};
int (*A)[3];
A = &test;
cout<<test[3]<<(*A)[3]<<endl;
// this will print -858993460 withiout any errors
所以任何人都可以告訴我爲什麼?我真的很困惑。
在第一種情況下,爲什麼它不是出現跨界錯誤,而是一個未定義的錯誤? 以及爲什麼第二種情況不會出錯?我曾經認爲他們是相同的...
其實我確實知道數組從0開始,我很困惑,爲什麼第一個得到一個錯誤,但第二個不會?
您指的是數組中的第4個位置而不是第3個位置。您應該打印測試[2]以獲得值'3'。 – jmnwong
請注意,在C++中,數組是基於0的。 – ereOn