我将数组元素传递给一个函数。该函数将5添加到数组的每个元素。我也传递一个整数并加5 ...尽管它是一个'按值调用'的函数,整数dosn't的值在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;
}
您需要一个指针来更改变量 – 2014-10-02 07:30:41
的值,并传递整数a,然后将5加上y !!!!!!! – 2014-10-02 07:30:49
当你调用'change(sharan,a)'时,会在函数内部创建并使用a的值的一个副本。 (该函数将5赋值给那个很好的副本,但与外部'a'没有任何关系,它不受影响。)将参数'y'声明为这样的引用:'void change(int x [],int&y ){...}'。那么y将成为a的别名(不是a的副本),并且y的更改将相当于a的更改。 – 2014-10-02 07:33:16