我当时只会C语言,在我理解&就是取地址符号。但是严蔚敏老师书中一些什么 Linklist &L彻底把我弄疯了。后来学了C++,才了解&的含义。下边就简单说一下。
一、什么是引用&
引用的另一个说法就是别名。相当于换了个名字。假如你叫张三,那么你换了个名字叫张不二,但你还是你。张三和张不二只是同一个你的不同名字。为什么我这么强调是同一个你呢。看一个简单地c语言代码
int a = 5;
int b = a;
b = 3;
请问这个时候a等于多少?
想都不用想,a还是等于5.因为这时候b只是借用了你的名字。假如另一个人觉得张三这个名字挺不错的,于是他也改名叫张三跟你一样。后来他渐渐对这个名字失去了好感,他改名叫张某某了。这个时候你还是张三,不会是张某某。这个例子是这个意思
好,接下来是引用
int a = 5;
int &b = a;(注意写法,不是int b = &a,这是取地址)
b = 3;
这个时候你输出a,你会发现a也等于3.到这你就明白了什么是引用。
同样如果你在函数里定义引用的话,是会改变传入函数的值的。
二、写法
由于引用是别名,所以必须要现有一个名字,再有别名,所以对于直接定义引用的话,不能直接写
int &a;
而要写int &a = c;
c必须提前存在,但是引用在碰到函数参数的时候是个例外,比如我们学习线性表
void createLinkList(LinkList &L)
这个时候也是引用。所以一定要注意清楚,引用一般出现在等号左边,取地址一般出现在等号右边。而且如果你还弄不清的话,可以理解为,一般取地址是和指针一起使用的。引用是和普通变量一起使用的。
三、为什么要用引用
引用一是能够改变实际的值,对于createList,插入,删除等需要修改线性表的操作,是需要引用的,所以你会看到这些函数都用了引用,而一些listLength等获取线性表长度的操作,只是读取线性表信息而不会对线性表发生修改的函数,你会看到,这些地方,并没有使用引用。同时,引用使用起来比指针方便假如你写链表的话,用指针你会这么写
p->next;
用引用你会这么写
p.next;
只是简单这么一说,还要注意。如果你要使用引用,请把源文件保存为.cpp格式,并使用c++编译(大部分都默认都是的,排除一些复古系统)。
一、什么是引用&
引用的另一个说法就是别名。相当于换了个名字。假如你叫张三,那么你换了个名字叫张不二,但你还是你。张三和张不二只是同一个你的不同名字。为什么我这么强调是同一个你呢。看一个简单地c语言代码
int a = 5;
int b = a;
b = 3;
请问这个时候a等于多少?
想都不用想,a还是等于5.因为这时候b只是借用了你的名字。假如另一个人觉得张三这个名字挺不错的,于是他也改名叫张三跟你一样。后来他渐渐对这个名字失去了好感,他改名叫张某某了。这个时候你还是张三,不会是张某某。这个例子是这个意思
好,接下来是引用
int a = 5;
int &b = a;(注意写法,不是int b = &a,这是取地址)
b = 3;
这个时候你输出a,你会发现a也等于3.到这你就明白了什么是引用。
同样如果你在函数里定义引用的话,是会改变传入函数的值的。
二、写法
由于引用是别名,所以必须要现有一个名字,再有别名,所以对于直接定义引用的话,不能直接写
int &a;
而要写int &a = c;
c必须提前存在,但是引用在碰到函数参数的时候是个例外,比如我们学习线性表
void createLinkList(LinkList &L)
这个时候也是引用。所以一定要注意清楚,引用一般出现在等号左边,取地址一般出现在等号右边。而且如果你还弄不清的话,可以理解为,一般取地址是和指针一起使用的。引用是和普通变量一起使用的。
三、为什么要用引用
引用一是能够改变实际的值,对于createList,插入,删除等需要修改线性表的操作,是需要引用的,所以你会看到这些函数都用了引用,而一些listLength等获取线性表长度的操作,只是读取线性表信息而不会对线性表发生修改的函数,你会看到,这些地方,并没有使用引用。同时,引用使用起来比指针方便假如你写链表的话,用指针你会这么写
p->next;
用引用你会这么写
p.next;
只是简单这么一说,还要注意。如果你要使用引用,请把源文件保存为.cpp格式,并使用c++编译(大部分都默认都是的,排除一些复古系统)。