#include <iostream>
using namespace std;
void Fun(int arr1[], int arr2[])
{
arr1=arr2;
for(int i=0;i<5;i++)
{
cout<<arr1[i]<<" "<<arr2[i]<<endl;
}
}
int main() {
int arr1[5];
int arr2[5];
for(int i=0;i<5;i++)
{
arr1[i]=i+1;
arr2[i]=i;
}
Fun(arr1,arr2);
for(int i=0;i<5;i++)
{
cout<<arr1[i]<<" "<<arr2[i]<<endl;
}
return 0;
}
在上面的代码中,为什么Fun函数中的arr1 = arr2,但是从函数返回时,arr1仅具有初始值?
最佳答案
在函数自变量中,int arr1[]
与int *arr1
含义相同。
arr1=arr2;
是指针的分配,现在arr1
和arr2
指向同一数组(的头部),因此在Fun()
中打印相同的数组。另一方面,该分配仅影响指针,而不影响所指向的数组,因此不会影响
main()
函数。要复制数组的内容,可以使用
std::copy
。#include <iostream>
#include <algorithm> // for std::copy
void Fun(int arr1[], int arr2[])
{
std::copy(arr2, arr2 + 5, arr1);
for(int i=0;i<5;i++)
{
std::cout<<arr1[i]<<" "<<arr2[i]<<std::endl;
}
}
关于c++ - 使用 '='运算符在C++中使两个数组相等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63305755/