南开大学C++课件_第_6章b_指针、结构体及引用.ppt

南开大学C++课件_第_6章b_指针、结构体及引用.ppt

ID:56974329

大小:656.00 KB

页数:36页

时间:2020-07-25

南开大学C++课件_第_6章b_指针、结构体及引用.ppt_第1页
南开大学C++课件_第_6章b_指针、结构体及引用.ppt_第2页
南开大学C++课件_第_6章b_指针、结构体及引用.ppt_第3页
南开大学C++课件_第_6章b_指针、结构体及引用.ppt_第4页
南开大学C++课件_第_6章b_指针、结构体及引用.ppt_第5页
资源描述:

《南开大学C++课件_第_6章b_指针、结构体及引用.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第6章指针、结构体及引用……….6.4引用类型6.5程序实例16.4引用类型引用(reference)是C++语言特有的数据形式。它的存在不仅像数组和指针那样依赖于已有的类型,而且它还依赖于一个已有的变量。简单的说,引用是某个变量或对象的别名。建立引用,必须用某个变量名或对象名来对它进行初始化,从而将该引用绑定在那一个变量或对象上。即是说,建立引用并不重新为其分配内存空间,引用只是另一变量或对象的别名,任何对引用的使用与改变都是对该引用所绑定的那一变量或对象的使用与改变。21.引用变量的说明建立引用的格式如下:<类型>&<变量名

2、>=<对象变量名>例如:inta=2,b;int&refa=a;//引用refa是int型变量a的别名int&refb=b;//引用refb是int型变量b的别名那么经赋值“refb=55;”以及“refa+=2;”之后,b与refb的当前值都将是55,而a与refa都在原有值2的基础上增加了2,即当前值都变成了4。32.引用和指针的区别引用和指针从说明到使用上都有些相似,但在概念上却有着明显的不同。主要区别在以下几个方面。(1)指针表示的是一个对象变量的地址,而引用则表示一个对象变量的别名。因此在程序中表示其对象变量时,前者要

3、通过取内容运算符“*”,而后者可直接代表。例如:inta;int*pa=&a;int&ra=a;当要对a赋值123时,下述三个语句是等价的:a=123;*pa=123;ra=123;4引用类型变量与其他类型变量不同,它没有自己的值和地址空间,只是作为另一变量的别名,在它的生存期期间两个名字绑定在一起,因此,引用类型的使用是有限制的:引用类型变量不能被引用;引用类型不能组成数组;引用类型不能定义指针。正是这些限制,保证了它的安全性,反而成为人们选择它取代方便灵活的指针的原因。5(2)指针是可变的,它可以指向变量a,也可以指向变量b

4、,而引用则只能在建立时一次确定(固定绑定在某一个变量上),不可改变。例如:inta,b=456;int*p=&a;int&ra=a;以后再执行“p=&b;”是合法的,它使指针p又改指变量b。但不能通过“ra=b;”的赋值或“int&ra=b;”的重新建立新的绑定关系来改变引用ra。前者的“ra=b;”的赋值只是将b的值(即456)赋给了与ra绑定的变量a以及引用ra本身;而后者试图为引用ra重新建立新的绑定关系则会导致出现一个编译错误(ra重定义,重复初始化)。6(3)由于引用本身不是一个独立的变量(它本身不具有独立的变量地址,

5、使用的是与其绑定的那一变量的地址),所以,不能出现引用的引用,不能出现元素为引用的数组,也不能使用指向引用的指针(注意,可以出现指针的指针、可以出现元素为指针的数组,也可以说明对指针的引用,这都缘于指针是独立变量的缘故)。int&&ref;//ERR!不能出现引用的引用int&refa[10];//ERR!不能出现元素为引用的数组int&*refp;//ERR!不能使用指向引用的指针int*pi,*&pref=pi;//OK!可以说明对指针的引用//将引用pref与int*类型的指针变量pi进行了绑定73.引用型参数以“<类型>

6、&”形式说明的函数参数,可实现“双向传值”(被调函数中对形参值的使用与改变,就是对主调函数中调用语句处所对应实参变量值的直接使用与改变)。可这样理解:引用型形参是调用语句处所对应实参变量的别名,而且系统又将该形参与实参进行了绑定。引用参数的某些内容与用法已在赋值参数与引用参数一节中介绍过,请参阅。84.引用型的函数返回值非引用型的函数通常仅返回一个值,而若把函数的返回类型说明为引用型时,则这个函数除返回一个值外,而且还返回了它的“别名”--该函数调用的结果还可以被赋值(调用结果可以作左值!)。下面给出一个示意性的例子:int&m

7、axr(int&m,int&n){//返回值类型为引用类型if(m>n)returnm;returnn;}//由于函数类型为引用,返回的必须是变量(可作左值)9inta=2,b=4,c;c=maxr(a,b);//OK!一般性调用,使c值为4maxr(a,b)=88;//OK!函数调用结果相当于变量b的“别名”,//可以作左值!使b值变为88maxr(a,b)++;//OK!函数调用结果相当于变量b的“别名”,//可以作左值!使b值增加110引用应用示例1.引用示例1--引用的建立及简单使用#include

8、>voidmain(){inta;int&ra=a;//ra为引用,它是变量a的“别名”int*pa=&a;cout<<"&a="<<&a<

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。