# include<iostream>
using namespace std;
void ar(int & a, int & b); //引用传递
void ap(int * p, int * q); //指针传递
void av(int a, int b); //值传递
int main()
{
int value1 = 100;
int value2 = 200;
cout << "value1 = " << value1;
cout << "value2 = " << value2 << endl;
cout << "引用传递" << endl;
ar(value1, value2);
cout << "value1 = " << value1;
cout << "value2 = " << value2 << endl;
cout << "指针传递" << endl;
ap(&value1, &value2);
cout << "value1 = " << value1;
cout << "value2 = " << value2 << endl;
cout << "值传递" << endl;
av(value1, value2);
cout << "value1 = " << value1;
cout << "value2 = " << value2 << endl;
return 0;
}
void ar(int & a, int & b) //引用传递
{
int t;
t = a;
a = b;
b = t;
}
void ap(int * p, int * q) //指针传递
{
int t;
t = *p;
*p = *q;
*q = t;
}
void av(int a, int b) //值传递
{
int t;
t = a;
a = b;
b = t;
}
&表示引用类似于*表示指针
运行之后可以了解到引用和指针的方式都改变了值,而值传递之后最后输出结果,发现value1和value2的值没有改变。
因为在av函数中变量a和变量b分别复制了value1和value2的值成为了新的变量,让a和b的值互换,并没有改变value1和value2的值.
如果有疑问可在下方评论我会为大家解答。