我正在編寫代碼,並意識到我可以「訪問」與數組大小相同或更大索引的數組元素。爲什麼這不會產生錯誤?爲什麼我可以在C++中訪問大於數組大小的數組索引?
例如,
#include <iostream>
using namespace std;
int main()
{
int b_array[5] = {1, 2, 3, 4, 5};
cout << b_array[5] << endl // Returns 0
<< b_array[66] << endl; // Returns some apparently random value.
return 0;
}
未定義的行爲。任何事情都可能發生。 – 0x499602D2
這是未定義的行爲。無論在運行時發生什麼都是錯誤。 – juanchopanza
爲什麼編譯器允許這樣做?考慮到它可能在for循環中偶然發生,不應該是非法的嗎? – ThisIsNotAnId