欢迎来到天天文库
浏览记录
ID:12046034
大小:25.50 KB
页数:5页
时间:2018-07-15
《指针与引用的区别(非常经典)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、c++中,引用和指针的区别(1)引用总是指向一个对象,没有所谓的nullreference.所有当有可能指向一个对象也由可能不指向对象则必须使用指针.由于C++要求reference总是指向一个对象所以reference要求有初值.String&rs=string1;由于没有所谓的nullreference所以所以在使用前不需要进行测试其是否有值.,而使用指针则需要测试其的有效性.(2)指针可以被重新赋值而reference则总是指向最初或地的对象.(3)必须使用reference的场合.Operator[]操作符由
2、于该操作符很特别地必须返回[能够被当做assignment赋值对象]的东西,所以需要给他返回一个reference.(4)其实引用在函数的参数中使用很经常.voidGet***(constint&a)//这样使用了引用有可以保证不修改被引用的值{}引用和指针★相同点:1.都是地址的概念;指针指向一块内存,它的内容是所指内存的地址;引用是某块内存的别名。★区别:1.指针是一个实体,而引用仅是个别名;2.引用使用时无需解引用(*),指针需要解引用;3.引用只能在定义时被初始化一次,之后不可变;指针可变;引用“从一而终”^
3、_^4.引用没有const,指针有const,const的指针不可变;5.引用不能为空,指针可以为空;6.“sizeof引用”得到的是所指向的变量(对象)的大小,而“sizeof指针”得到的是指针本身(所指向的变量或对象的地址)的大小;typeid(T)==typeid(T&)恒为真,sizeof(T)==sizeof(T&)恒为真,但是当引用作为成员时,其占用空间与指针相同(没找到标准的规定)。7.指针和引用的自增(++)运算意义不一样;★联系1.引用在语言内部用指针实现(如何实现?)。2.对一般应用而言,把引用理
4、解为指针,不会犯严重语义错误。引用是操作受限了的指针(仅容许取内容操作)。引用是C++中的概念,初学者容易把引用和指针混淆一起。一下程序中,n是m的一个引用(reference),m是被引用物(referent)。intm;int&n=m;n相当于m的别名(绰号),对n的任何操作就是对m的操作。例如有人名叫王小毛,他的绰号是“三毛”。说“三毛”怎么怎么的,其实就是对王小毛说三道四。所以n既不是m的拷贝,也不是指向m的指针,其实n就是m它自己。引用的一些规则如下:(1)引用被创建的同时必须被初始化(指针则可以在任何时候
5、被初始化)。(2)不能有NULL引用,引用必须与合法的存储单元关联(指针则可以是NULL)。(3)一旦引用被初始化,就不能改变引用的关系(指针则可以随时改变所指的对象)。以下示例程序中,k被初始化为i的引用。语句k=j并不能将k修改成为j的引用,只是把k的值改变成为6。由于k是i的引用,所以i的值也变成了6。inti=5;intj=6;int&k=i;k=j;//k和i的值都变成了6;上面的程序看起来象在玩文字游戏,没有体现出引用的价值。引用的主要功能是传递函数的参数和返回值。C++语言中,函数的参数和返回值的传递方
6、式有三种:值传递、指针传递和引用传递。以下是“值传递”的示例程序。由于Func1函数体内的x是外部变量n的一份拷贝,改变x的值不会影响n,所以n的值仍然是0。voidFunc1(intx){x=x+10;}intn=0;Func1(n);cout<<“n=”<7、(&n);cout<<“n=”<8、工具做恰如其分的工作”。指针能够毫无约束地操作内存中的如何东西,尽管指针功能强大,但是非常危险。就象一把刀,它可以用来砍树、裁纸、修指甲、理发等等,谁敢这样用?如果的确只需要借用一下某个对象的“别名”,那么就用“引用”,而不要用“指针”,以免发生意外。比如说,某人需要一份证明,本来在文件上盖上公章的印子就行了,如果把取公章的钥匙交给他,那么他就
7、(&n);cout<<“n=”<8、工具做恰如其分的工作”。指针能够毫无约束地操作内存中的如何东西,尽管指针功能强大,但是非常危险。就象一把刀,它可以用来砍树、裁纸、修指甲、理发等等,谁敢这样用?如果的确只需要借用一下某个对象的“别名”,那么就用“引用”,而不要用“指针”,以免发生意外。比如说,某人需要一份证明,本来在文件上盖上公章的印子就行了,如果把取公章的钥匙交给他,那么他就
8、工具做恰如其分的工作”。指针能够毫无约束地操作内存中的如何东西,尽管指针功能强大,但是非常危险。就象一把刀,它可以用来砍树、裁纸、修指甲、理发等等,谁敢这样用?如果的确只需要借用一下某个对象的“别名”,那么就用“引用”,而不要用“指针”,以免发生意外。比如说,某人需要一份证明,本来在文件上盖上公章的印子就行了,如果把取公章的钥匙交给他,那么他就
此文档下载收益归作者所有