2015-01-02 195 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