有人可以向我解释这个C++数组吗?
#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;
}
有人能向我解释为什么arr[0] = 5
?我无法弄清楚。
当访问i=4
时,您访问了界限。 arr1
和arr2
只有4个元素。即arr1[0], arr1[1], arr1[2], arr1[3]
和arr2[0], arr2[1], arr2[2], arr2[3]
。
你的编译器可能只是arr2
后分配arr1
,而不期而遇arr2 + 4
有相同的地址arr1
,所以获得arr2[4]
写的值arr1[0]
。
以及即时通讯尝试测试复制一个数组到另一个数组可以建议我如何进行这方面的方式,我删除了'arr2 [i] = arr1 [i]'现在它显示正确。 – Allahuakbar
只需为'arr1'和'arr2'分配足够的内存。 'int arr1 [5]; int arr2 [5];' – MikeCAT
谢谢你!现在就开始编码 – Allahuakbar
你没有'arr',只有'arr1'和'arr2'。 – MikeCAT