有人能解释一下这个C ++数组吗?

时间:2015-09-27 01:12:23

标签: c++ arrays

#include <iostream>
using namespace std;
int main()
{
    int arr1[4];
    int arr2[4];
    for (int i = 0;i<=4;i++)
    {
        cin>>arr1[i];
        arr2[i]=arr1[i];
    }
    for(int j = 0;j<=4;j++)
    {
        cout<<arr1[j]<<" ";
        cout<<endl;
    }
    system("PAUSE");
    return EXIT_SUCCESS;
}

结果:

enter image description here

有人可以向我解释为什么arr[0] = 5?我无法弄明白。

1 个答案:

答案 0 :(得分:2)

您在i=4时访问了界限。 arr1arr2只有4个元素。即arr1[0], arr1[1], arr1[2], arr1[3]arr2[0], arr2[1], arr2[2], arr2[3]

您的编译器可能会在arr1之后分配arr2,并且意外arr2 + 4与[{1}}具有相同的地址,因此访问arr1会写入值到arr2[4]