我编写了一个程序将数组划分为两个新数组,但由于某种原因,原始数组的元素正在发生变化。 C++

I wrote a program to divide and array into two new arrays but for some reason, the elements of the original array is changing. C++

我不明白为什么我的原始数组,即 arr[] 发生变化(随着数字顺序的变化,最后四个元素变成前四个),请解释为什么即使我没有分配给任何地方。

#include <iostream>

using namespace std;
int main()
{
    int arr[] {5,4,1,8,7,2,6,3};
    int numberOfElements=8; //sizeof(arr)/sizeof(arr[0])
    int array1[]{};
    int array2[]{};
    for(int i=0;i<=(numberOfElements/2)-1;i++){
        array1[i]=arr[i];
        array2[i]=arr[i+4];
        }
    return 0;
}

这叫做未定义行为。 你不小心重写了没有为你分配的内存数组

array1[i]=arr[i];
array2[i]=arr[i+4];

#include <iostream>

using namespace std;
int main()
{
    int arr[] {5,4,1,8,7,2,6,3};
    int numberOfElements=8;
    int array1[]{};
    int array2[]{};
    int i=0;
    while(i<numberOfElements){
            cout << arr[0];
            if(i > 3){
                array2[i]=arr[i];
            }else{
                array1[i]=arr[i];
            }
            i++;
        }
    return 0;
}