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

标签 c++ arrays function pointers equality

    #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/

相关文章:

php - MySQL中如何获取线性函数行?

c++ - 如何将 "A1"样式的行+列规范作为输入?

c++ - 如何在 C++ 中读取/写入数据到 excel 2007?

php - 从数组输入数据时如何防止mysql中的重复输入?

c# - 如何显式初始化枚举数组 [C#]

Javascript onkeydown 函数运行然后显示消失

c++ - 分配给匿名实例的基本类型的默认构造函数

c++ - 获取可执行文件的路径(使用 std::filesystem)

java - 如何从 Android 中 XML 中定义的字符串数组中获取对单个元素的引用

Javascript使用嵌套函数作为对象来访问