c++引用(REFERENCES)

发布时间 2023-08-03 16:04:36作者: 魔法少女小胖

一个例子

void add(int value)
{
    value++;
}

int main()
{
    int  a = 5;
    LOG(a);
    add(a);
    LOG( a);
}

在这种情况下,变量a在函数内进行自加运算,最后的结果仍然是两个5.
image
因为函数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上,然后指针进行一次逆运算,得到地址的值,再进行自加运算,效果同上。

总结

实际可以看出,引用其实和指针是一个东西,是指针的语法糖,引用操作模式更加易理解
引用自创建被指向某一变量时就无法再次指向别的变量,我们只能改变他的值。