- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第三章 引用
第三章 引用
一、 引用的概念
1. 引用是一个别名。当建立引用时,程序用另一个已定义好的变量或对象(目标)的名字初始化它,对引用的改动实际就是对目标的改动。
2. 建立引用的格式:数据类型 引用名=已定义好的变量名;
如 double d; double rd=d; 说明rd是对double型数的引用,初始化为引用d。
3. 引用的特点:
* 引用能使用任何合法变量名。
* 引用不是变量,必须初始化,一旦初始化后就不能再成为其他变量的引用。
* 引用不是值,不占存储空间。说明引用时,目标的存储状态不会改变。故引用只有说明没有定义。
* 引用只有在说明时带有””,以后像普通变量一样使用,不能再带””。
* 引用最好用作函数参数。
如: #includeiostream.h
void main(){ int n=100; int rn=n; n++;
cout”n=”nendl; cout”rn=”rnendl;
rn++; cout”n=”nendl; cout”rn=”rnendl; }
执行结果为: n=101 rn=101 n=102 rn=102
4. 由于指针也是变量,所以也可以引用指针变量。使用格式是:数据类型 * 指针引用名=指针
同样,先要定义”指针”,它是基类型为”数据类型”的指针变量。
如: #includeiostream.h
void main(){ int n=10,*pn=n,*rn=pn;
(*pn)++; cout”n=”nendl;
(*rn)++; cout”n=”nendl; }
执行结果为: n=11 n=12
5. 并不是对任何类型的数据都可引用,如以下情况:
* 对void进行引用是不允许的。 * 不能建立引用的数组。
* 没有引用的引用,也没有空引用。 * 引用不能用类型来初始化,如 int m=int; 是错误的。
二、 引用作函数参数
1. 在作为函数参数时,引用具有指针的威力,又具有传值方式的简单性和可读性。使用引用可以从调用的函数返回多个值。
如: #includeiostream.h
void f(int a[],int n,int max,int min){ max=min=a[0];
for(int i=1;in;i++){ if(maxa[i]) max=a[i]; if(mina[i]) min=a[i]; } }
void main(){ int a[10]={2,5,2,9,0,8,6,1,7,4}; int max,min;
f(a,10,max,min); cout”MAX:”maxendl;
cout”MIN:”minendl; }
执行结果为: Max:9 Min:0
2. 使用对象引用指针作为函数参数,既具有用对象指针作为函数参数的优点,又具有用对象作为函数参数的简单性和可读性。
如: #includeiostream.h
class Sample{ int x,y; public: Sample(){ x=y=0; }
Sample(int x1,int y1){ x=x1;y=y1;}
void copy(Sample s){ x=s.x; y=s.y; }
void setxy(int x1,int y1){ x=x1; y=y1; }
void disp(){ cout”(”x”,”y”)”endl; } };
void fun(Sample s1,Sample s2){ s1.setxy(12,18); s2.setxy(23,15); }
void main(){ Sample s(5,10),t; s.disp(); t.copy(s); t.disp();
f
文档评论(0)