首先来看一个例子
#include <iostream>
using namespace std;
int change(int r)
{
r++;
}
int main()
{
int x = 5;
change(x);
cout << "x = " << x << endl;
return 0;
}
将x传入change函数之后,再输出x的值,它是不会改变的,因为传入到change函数中的x只相当于main函数中原x的一个副本,最终输出的结果仍然为5;
要想真正改变x的值,应该使用C++中的引用,即在change函数中传入的形参前加上&符号:
#include <iostream>
using namespace std;
int change(int &r)
{
r++;
}
int main()
{
int x = 5;
change(x);
cout << "x = " << x << endl;
return 0;
}
当然,如果使用纯C(plain c)的语法来实现,就需要使用到指针,可以得到相同的效果
#include <iostream>
using namespace std;
void change(int *r)
{
++(*r);
}
int main()
{
int x = 5;
int *p = &x;
printf("%d\n",x);
change(p);
printf("%d\n",x);
return 0;
}
那么,如果要定义型的引用变量,应该如何实现?
代码如下:
#include <iostream>
using namespace std;
int a = 5,b = 6;
int *p = &a;
int *q = &b;
void change(int *&r)
{
r = q;
}
int main()
{
cout << *p << endl;
change(p);
cout << *p << endl;
return 0;
}