- 1、本文档共146页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
如果用指针访问未知大小数组的话,必须用动态内存分配。此时,数组元素还没有进行初识化 * 引用类型 引用的含义 引用(reference)是C++语言特有的数据形式。它的存在不仅像数组和指针那样依赖于已有的类型,而且它还依赖于一个已有的变量 引用是某个变量或对象的别名。建立引用,必须用某个变量名或对象名来对它进行初始化,从而将该引用绑定在那一个变量或对象上 建立引用并不重新为其分配内存空间,引用只是另一变量或对象的别名,任何对引用的使用与改变都是对该引用所绑定的那一变量或对象的使用与改变 Database Information System Lab * 引用类型 引用变量的说明与初始化 类型 变量名 = 对象变量名 【例如】 int a=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。 Database Information System Lab * 引用类型 引用与指针的区别 指针表示的是一个对象变量的地址,而引用则表示一个对象变量的别名。因此在程序中表示其对象变量时,前者要通过取内容运算符“*”,而后者可直接代表. 【例如】 int a; int *pa=a; int ra=a;? 当要对a赋值123时,下述三个语句是等价的: a=123; *pa=123; ra=123; Database Information System Lab * 引用类型 引用与指针的区别 指针是可变的,它可以指向变量a,也可以指向变量b,而引用则只能在建立时一次确定(固定绑定在某一个变量上),不可改变。 int a,b=456; int *p=a; int ra=a; p=b;//将变量b的地址赋给指针p ra=b;/*将b的值(即456)赋给了与ra绑定的变量a以及引用ra本身*/ int ra=b; /*不合法,为引用ra重新建立新的绑定关系则会导致出现一个编译错误(ra重定义,重复初始化)*/ Database Information System Lab * 引用类型 引用与指针的区别 由于引用本身不是一个独立的变量(它本身不具有独立的变量地址,使用的 是与其绑定的那一变量的地址),所以,不能出现引用的引用,不能出现元素为引用的数组,也不能使用指向引用的指针 指针是独立变量,可以出现指针的指针、可以出现元素为指针的数组,也可以说明对指针的引用 Database Information System Lab * 引用类型 引用类型变量与其他类型变量不同,它没有自己的值和地址空间,只是作为另一变量的别名,在它的生存期期间两个名字绑定在一起,因此,引用类型的使用是有限制的: 引用类型变量不能被引用; 引用类型不能组成数组; 引用类型不能定义指针。 正是这些限制,保证了引用的安全性,成为人们选择它取代方便灵活的指针的原因 Database Information System Lab * 引用类型 引用与指针的区别 int ref; //ERR! 不能出现引用的引用 int refa[10]; //ERR! 不能出现元素为引用的数组 int *refp; //ERR! 不能使用指向引用的指针 int *pi, *pref=pi; /*OK! 可以说明对指针的引用,将引用pref与int*类型的指针变量pi进行了绑定*/ Database Information System Lab * 引用类型 【例6.18】引用的建立及简单使用 #include iostream.h void main(){ int a; int ra=a; //ra为引用,它是变量a的“别名” int *pa=a; couta =aendl; //a为独立变量,具有独立地址 coutra=raendl; //ra是a的“别名”,不具有独立地址 coutpa=paendl; //pa为独立变量,具有独立地址 a=123; //对a赋值123后,使ra及*pa的值都成为123 Database Information System Lab * 引用类型 couta=aendl; cout*pa=*paendl; coutra=raendl; *pa=456; //对*pa赋值456后,使a及ra的值都成为456 couta=aendl; cout*pa=*paendl; coutra=raendl;
文档评论(0)