我將數組元素傳遞給一個函數。該函數將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