第1章-C++的初步知识.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
例1.10无法实现两个变量的值互换的程序。 #include iostream using namespace std; void swap(int a,int b) {int temp; temp=a; a=b; b=temp; //实现a和b的值互换 } int main( ) {int i=3,j=5; swap(i,j); couti,jendl; //i和j的值未互换 return 0; } 输出i和j的值仍为3和5。 例1.11 使用指针变量作形参,实现两个变量的值互换。 #include iostream using namespace std; void swap(int *p1,int *p2) {int temp; temp=*p1; *p1= *p2; *p2=temp; } int main( ) {int i=3,j=5; swap(i,j); couti,jendl; return 0; } 输出i和j的值为5和3。 (3)传送变量的别名。使用变量的别名做形参起到了和指针同样的作用,但更简单。 例1.12利用“引用形参”实现两个变量的值互换。 #include iostream using namespace std; void swap(int a,int b) {int temp; temp=a; a=b; b=temp; } int main( ) {int i=3,j=5; swap(i,j); couti=i j=jendl; return 0; } 输出结果为: i=5 j=3 对引用型形参的初始化是在函数调用时通过虚实结合实现的。 实际上,实参传给形参的是实参的地址,也就是使形参a和变量i具有同样的地址,从而使a和i共享同一单元。 通过上面的例子和分析,知道在c++调用函数时有两种传递数据的方式,一种是常用的方法:将实参的值传送给形参,形参是实参的一个拷贝;这种方式称为传值方式调用(call by value);另一种是将实参的地址传给引用型形参,这时形参与实参是同一个变量,这种方式称为引用方式调用(call by reference)。 对比上例使用引用比使用指针变量作函数形参的优点 : ①不必在swap函数中设立指针变量。指针变量要另外开辟内存单元,其内容是地址。而引用不是一个独立的变量,不单独占内存单元。 ②在main函数中调用swap函数时实参不必在变量名前加以表示地址。 ③使用指针变量时,为了表示指针变量所指向的变量,必须使用指针运算符*(如例1.1l程序内swap函数中的*pl,* p2),而使用引用时,引用就代表该变量,不必使用指针运算符*,swap函数更加简单。 ④用引用能完成的工作,用指针也能完成,但引用比指针的使用直观、方便,直截了当,不必“兜圈子”,容易理解。有些过去只能用指针来处理的问题,现在可以用引用来代替,从而降低了程序设计的难度。 5.对引用的进一步说明 (1)不能建立void类型的引用,如 void a=9; //错误 因为任何实际存在的变量都是属于非void类型的,void的含义是无类型或空类型,void只是在语法上相当于一个类型而已。 (2)不能建立引用的数组。如 char c[6]=”hello”; char rc[6]=c; //错误 企图建立一个包含6个元素的引用的数组,这样是不行的,数组名c只代表数组首元素的地址,本身并不是一个占有存储空间的变量。 (3)可以将变量的引用的地址赋给一个指针,此时指针指向的是原来的变量,如 int a=3; //定义a是整型变量 int b=a; //声明b是整型变量的别名 int *p=b; //指针变量p指向变量a的引用b,相当于指向a,合法 相当于P指向变量a,其作用与下面一行相同,即 int *p=a; 如果输出*p的值,就是b的值,也就是a的值。 (5)可以用const对引用加以限定,不允许改变该引用的值。如 int i=5; //定义整型变量i,初值为5 const int a=i; //声明常引用,不允许改变a的值 a=3; //企图改变引用a的值,错误 但是它并不阻止改变引用所代表的变量的值,如 i=3; //合法 (6)可以用常量或表达式对引用进行初始化,但此时必须用const作声明。如 int i=5: const in

文档评论(0)

yyons2019 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档