c++ - 如何将数组传递给函数,以便在该函数中更改数组的值时原始数组的值不会改变?
问题描述
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()
问题是修改也反映在原始数组上。有没有办法将数组传递给函数,以便在函数中执行任何操作时原始数组不会被更改?
解决方案
有没有办法将数组传递给函数,以便在函数中执行任何操作时原始数组不会被更改?
我能想到的选择:
在函数中制作数组的副本并修改副本。保持输入数组不变。
按值传递
std::vector
。对参数的任何更改都不会影响调用函数中的对象。如果您在编译时知道数组的大小,请
std::array
按值传递。对参数的任何更改都不会影响调用函数中的对象。
推荐阅读
- java - 如何用引号,站点运算符和非引号分割字符串?
- sql - Oracle 11 SQL:有没有办法将 1 行拆分为 x 行
- python - 如何使用 Python 从 SLDDRW 文件制作 PDF
- javascript - 如何在IE11中沿着声波图像移动光标(垂直线)播放作品音频
- token - ANTLR4 令牌仅在上下文中
- c# - How can I make a bordered circle button expand into a bordered pill button on hover in Unity, and still maintain the border thickness?
- dialog - 如何在执行操作时隐藏模型对话框?
- spring - 如何增强 Spring Boot REST API 以处理数万或更多的传入请求?
- sql - 如何根据间隔过滤sql中的行
- javascript - 如何像 React 中的 {...props} 一样在 Vue 中解构 props?