函数参数一般分为三种,一种是纯粹的值传递数据参数,第二种是地址传递,第三种是引用传递,我们一起来看看吧

第一种,普通的值传递。

//值传递
void mySwap01(int a ,int b) {

//进行交换
int temp = a;
a = b;
b = temp;
cout << "mySwap01 a = " << a << endl;
cout << "mySwap01 b = " << b << endl;
}

int main()
{
int a = 10;
int b = 20;
mySwap01(a,b);
cout << "a = " << a << endl;
cout << "b = " << b << endl;
system("pause");

return 0;
}

传递到mySwap01函数中的是a和b的值,在进行交换后,只有mySwap01函数中的a和b进行了改变,main中的a b不变。

结果:

mySwap01 a = 20
mySwap01 b = 10
a = 10
b = 20
请按任意键继续. . .

第二种,地址传递

void mySwap02(int *a,int *b) {
int temp = *a;
*a = *b;
*b = temp;
cout << "mySwap02 a = " << *a << endl;
cout << "mySwap02 b = " << *b << endl;
}

int main()
{
int a = 10;
int b = 20;
mySwap02(&a, &b);
cout << "a = " << a << endl;
cout << "b = " << b << endl;
system("pause");

return 0;
}

地址传递首先要在函数形参中设置 *a和*b,显示地址的形式,说明在mySwap02中传入的参数是地址。然后在实参中传入的是a和b的指针(地址),所以使用&a和&b来取地址。结果显示指针传递可以改变a和b的值。

结果:

mySwap02 a = 20
mySwap02 b = 10
a = 20
b = 10
请按任意键继续. . .

第三种,引用传递

void mySwap03(int &a, int &b) 
{ int temp =a;
a = b;
b = temp;
cout << "mySwap03 a = " << a << endl;
cout << "mySwap03 b = " << b << endl;
}

int main()
{
int a = 10;
int b = 20;
mySwap03(a, b);
cout << "a = " << a << endl;
cout << "b = " << b << endl;
system("pause");

return 0;
}

引用传递和值传递的写法差不多,最容易混肴,只不过在mySwap03中参数添加了一个&,这样我们相当于给实参a和b取了一个别名,这样&a和&b变化,相应的a和b都会变化。

结果:

mySwap03 a = 20
mySwap03 b = 10
a = 20
b = 10
请按任意键继续. . .

好了,这就是c++中的三个比较难搞清楚的点,留作笔记未来翻看。