首页 > 解决方案 > 如何将数组传递给函数,以便在该函数中更改数组的值时原始数组的值不会改变?

问题描述

using namespace std;
#include<iostream>
int passarr(int b[],int s)
{
   //Some Modification in the array b
    b[0]=0;
    b[s-1]=0;

    //Printing the array b
    for(int i=0;i<s;i++)
    {
        cout<<b[i]<<" ";
    }
    cout<<endl;
}
int main()
{
    int arr[100];
    int n;
    cin>>n;
    for(int i=0;i<n;i++)
    {
        cin>>arr[i];
    }

    //Function call and passing array a to the function`
    passarr(arr,n);

    //Printing the array arr
    for(int i=0;i<n;i++)
    {
        cout<<arr[i]<<" ";
    }
}

在这段代码中,我已将数组传递给执行一些修改arr的函数。passarr()问题是修改也反映在原始数组上。有没有办法将数组传递给函数,以便在函数中执行任何操作时原始数组不会被更改?

标签: c++arraysfunction

解决方案


有没有办法将数组传递给函数,以便在函数中执行任何操作时原始数组不会被更改?

我能想到的选择:

  1. 在函数中制作数组的副本并修改副本。保持输入数组不变。

  2. 按值传递std::vector。对参数的任何更改都不会影响调用函数中的对象。

  3. 如果您在编译时知道数组的大小,请std::array按值传递。对参数的任何更改都不会影响调用函数中的对象。


推荐阅读