- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C中
一种是按位与 1 2 = 0一种是取地址int* p = a;一种是声明引用,相当于定义变量别名:int a = 3;int b = a; // b是a的引用,a,b是同一个变量b = 4; // a也变化为4int c = 2;b = c; // 是赋值给b或a,而不是把b作为c的引用,引用一旦被声明,引用对象不可更改引用的实质是指针的简化运用版,上面的代码等价为:int a = 3;int* const b = a; // 常指针,b的位置不能更改,相当于引用不能更改自身的引用对象*b = 4;所以引用省去了声明时的取地址操作和对变量内存地址引用时的解引用操作,而且引用不能随意被更改,站在指针的角度上说,引用的意义等价于一个常指针,也就是不能改变自己指向位置的指针。引用在作为参数传递的时候,传递的是实参本身,c++里面类设计经常要传递整个类作为参数,但如果在不必要的时候使用传统的按值传递,效率损失可见一斑:class foo {public:....int a;double b;string c;};void bar(foo f) { //输出abc }比如这个函数bar,传参的时候是按值传递,也就是实参的所有数据被重新复制到参数f里,构造了一个新对象f,它只是输出参数f的abc成员,所以必要重新构造一个临时对象f,这样造成了效率的损失,解决方法有2种:void bar1(foo* f){ cout f-a f-b f-c; }var bar2(foo f) { cout f.a f.b f.c; }这2种方式的运作机制是相同的,但是后者要更简洁和优美一些,特别是在操作多层间接指针的函数里面,直接使用指针的话,过多取地址和解引用*容易造成代码混乱,降低可读性。再如friend Complex operator +(Complex,Complex);在这个重载语句中 Complex的作用是什么?假如不写有什么影响?还有在类中定义时是不带参数如friend Complex operator +(Complex,Complex);在实现中再定义friend Complex operator +(Complex temp1,Complex temp2);这个重载语句中 Complex的作用是,表示调用函数时传递参数是以引用方式传递的,这样子在函数中操作的对象就是调用外面的那个对象本身。假如不写的话,其影响有两个。一个是,当你想对这个参数的对象进行修改的话,在函数返回后,这个修改的值不会改变。第二,在做参数传递的时候,不加的话,传递的过程中,会创造一个临时对象,这样会造成一定的效率浪费。在编程中,函数分声明和定义。声明只是告诉编译器,存在这个函数,这个时候可以不带参数名称。而定义的时候,就必须实行函数本体,这个时候就必须带上参数的名称了。引用“ 的用法与指针的用法 时间: 2008-05-16 作者:佚名编辑:本站点击: 1868 [ 评论 ]--//class calss Test{ //}//创建一个Test 的对象Test Ta;b = Ta; //理解成PHP的引用就可以了...这相当于把b的地址指向Ta,,也就相当于b和Ta相等,都指定同一个内存地址.接下来是转别人的例子:引用是C++引入的新语言特性,是C++常用的一个重要内容之一,正确、灵活地使用引用,可以使程序简洁、高效。首先我们来讲一下指针比如inta,bint *pointer_1, *pointer_2....pointer_1 = a; pointer_2 = bswap(pointer_1, pointer_2);...........在子函数中是swap(int *p1, int *p2)这里实行交换操作。。。。解释指针本质: 在主函数中把指针变量pointer_1和pointer_2传递使p1和p2也指向a,b,先进行交换,交换后,pointer_1和p1指向了b但是pointer_2和p2指向了a,然后p1和p2释放了,但是交换却成功了!(自己理解的!)下面讲引用转()引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。引用的声明方法:类型标识符 引用名=目标变量名;【例1】:int a; int ra=a; //定义引用ra,它是变量a的引用,即别名说明:(1)在此不是求地址运算,而是起标识作用。(2)类型标识符是指目标变量的类型。(3)声明引用时,必须同时对其进行初始化。(4)引用声明完毕后,相当于目标变量名有两个名称,即该目标原名称和引用名,且不能再把该引用名作为其他变量名的别名。ra=1; 等价于 a=1; (5)声明一个引用,不是新定义了一个变量,它只表示该引用名是目标变量名的一个别名,它本身
文档评论(0)