【问题标题】:Can someone explain to me this C++ array?有人可以向我解释这个 C++ 数组吗?
【发布时间】:2015-09-27 01:12:23
【问题描述】:
#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?我想不通。

【问题讨论】:

  • 你没有arr,只有arr1arr2

标签: c++ arrays


【解决方案1】:

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

您的编译器可能在arr2 之后分配了arr1,并且偶然arr2 + 4arr1 具有相同的地址,因此对arr2[4] 的访问将值写入arr1[0]

【讨论】:

  • 好吧,我正在尝试测试将一个数组复制到另一个数组,你能建议我如何继续这样做吗?我删除了arr2[i]=arr1[i],它现在可以正确显示了。
  • 只要给arr1arr2分配足够的内存就好了。说。 int arr1[5]; int arr2[5];
猜你喜欢
  • 2011-07-14
  • 2014-10-13
  • 2010-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-07
  • 2023-04-08
相关资源
最近更新 更多