引用是c++里面的取地址符号。在函数中改变形参的值是不会改变主函数里面的值的,除非加指针和引用,是因为指针和引用都把形参的地址传入了,所以才会在函数中改变实参。
1、下面看一个例子,函数中用引用来改变实参的值:
void change(int& i)
{
i = 8;
}
int main()
{
int i = 5;
change(i);
printf("%d\n", i);
return 0;
}
这样简单的写一个函数,会直接改变i里面的值,要是去掉&引用后,i的值还是5不变;
2、下面升级一下,看一下&引用在单链表的使用
bool LinkChangedata(LinkList L, int site, int i)
{
if (site < 1)
return false;
LinkList p = GetElem(L,site);
p->data = i;
return true;
}
这段代码主要的用途是改变单链表L中site位置的值,改成i
注意这里我们并没有使用&,但是实际上还是在主函数中改变了单链表中的数据;
(实际上,加不加引用,都会改变单链表中数据的值)
具体的正确解释是:L是指向头结点的指针,不改变L就不用加引用。
但是具体是为什么呢?底层逻辑是什么呢?有没有小伙伴来解答一下!