2015-01-02 230 views
0

我已經通過[問題1](Initialization of a normal array with one default value)和[問題2](How to initialize an array in C++ objects)但我無法理解下面的行爲。陣列初始化混淆

int main() 
{ 
    int arr[5]; 
    arr[5] = {-1}; // option 1 
    int arr1[5] = { -1 }; //option 2 
    for (int i = 0; i < 5; i++) 
     cout << arr[i] << " "; 
    for (int i = 0; i < 5; i++) 
     cout << arr1[i] << " "; 
} 

選項1給出了:無用值 選項2給出的值:正如預期的那樣 請深入淺出的講解,爲什麼我沒有看到在這兩個選項1和選項2相同的行爲。

回答

3

在選項1中,你是有一個uninitialzed陣列

int arr[5]; 

然後分配一個值超出範圍

arr[5] = {-1}; 

由於只有有效索引是[0][4]

+1

我犯了這個錯誤,你必須明白爲什麼,因爲我一直在想錯誤。但是你的回答讓我明白,我正在爲索引分配值,而不是在選項2中進行初始化。謝謝! – Unbreakable