我编写了一个程序将数组划分为两个新数组,但由于某种原因,原始数组的元素正在发生变化。 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;
}
我不明白为什么我的原始数组,即 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;
}