gpt4 book ai didi

c++ - 使用 '='运算符在C++中使两个数组相等

转载 作者:行者123 更新时间:2023-12-01 15:10:15 25 4
gpt4 key购买 nike

    #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;
是指针的分配,现在 arr1arr2指向同一数组(的头部),因此在 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com