【发布时间】:2014-10-02 07:26:02
【问题描述】:
我将数组元素传递给函数。此函数将 5 添加到数组的每个元素。我还传递了一个整数并向其添加 5...即使它是一个“按值调用”函数,整数的值在 main() 中不会改变(这是预期的),但数组元素确实会改变。 ..
我想知道如何以及为什么?
#include <iostream>
using namespace std;
void change(int x[],int y);
int main()
{
int sharan[]={1,2,3,4};
int a=10;
change(sharan,a);
for(int j=0;j<4;j++)
{
cout<<sharan[j]<<endl;
}
cout<<endl<<"a is : "<<a;
return(0);
}
void change(int x[],int y)
{
for(int i=0;i<4;i++)
{
x[i]+=5;
}
y+=5;
}
【问题讨论】:
-
你需要一个指针来改变变量的值
-
传递整数 a 然后将 5 加到 y 上!!!!!!
-
当您调用
change(sharan,a)时,会复制 a 的值并在函数内部使用。 (该函数将 5 分配给该副本,这很好,但与不受影响的外部a无关。)将参数y声明为如下引用:void change(int x[],int &y){ ... }。然后 y 将成为 a 的别名(不是副本),对 y 的更改将等同于对 a 的更改。
标签: c++ arrays call-by-value