一个例子
void add(int value)
{
value++;
}
int main()
{
int a = 5;
LOG(a);
add(a);
LOG( a);
}
在这种情况下,变量a在函数内进行自加运算,最后的结果仍然是两个5.
因为函数add的value实际上是传值引用,即value只是拷贝了a的数据,并没有影响a。
显而易见的,我们可以更改add函数使其有返回值,使得a等于这个返回值。
int add(int value)
{
return value++;
}
int main
{
int a =5;
a=add(a);
}
更方便的,我们可以使用传址引用,即传递变量的地址,让函数内value直接对地址上的数据操作。
void add(int& value)
{
value++;
}
其余什么都不需要改变
在这里,int& value中value就是a,因为两者地址一致,所指代的都为一个值。
还有别的方法
void add(int* value)
{
(*value)++;
}
在本例中,函数传入a的地址到指针value上,然后指针进行一次逆运算,得到地址的值,再进行自加运算,效果同上。
总结
实际可以看出,引用其实和指针是一个东西,是指针的语法糖,引用操作模式更加易理解
引用自创建被指向某一变量时就无法再次指向别的变量,我们只能改变他的值。