现在的位置: 首页 > 综合 > 正文

指针和引用的比较小结

2013年08月29日 ⁄ 综合 ⁄ 共 914字 ⁄ 字号 评论关闭

指针与引用的区别:

1.从定义上说, 

        引用被创建的同时必须被初始化 ;指针则可以在任何时候被初始化

2.从内存分配上说,

        引用仅是个别名,而指针是一个实体;程序不给引用分配内存,  而程序会为指针分配4个字节的内存.

3.从编译上来说,

        程序在编译时分别将指针和引用添加到符号表上,符号表上记录的是变量名及变量所对应的地址。
指针变量在符号表上对应的地址值为指针变量的地址值,而引用在符号表对应的地址值为被引用的对象的地址值。
符号表生成后就不会改变,因此指针可以改变指向的对象,而引用不能改变它所指向的对象。
4.从使用上说,
       不能有NULL引用,引用必须与合法的存储单元关联 ;指针则可以是NULL

       指针用操作符 *和->,而引用用操作符. 

       引用有指向const的引用,但没有引用常量;而指针既有指向const的指针,也有指针常量。
       sizeof(引用) 得到的是所指向的变量的长度;而sizeof(指针) 得到的是指针本身的长度。

       指针和引用的自增(++)运算意义不一样;

       一旦引用被初始化,就不能改变引用的关系;而指针则可以随时改变所指的对象。 


指针与引用的相同点:

都是地址的概念:指针指向一块内存,它的内容是所指内存的地址;引用是某块内存的别名。

指针与引用的联系
1. 引用在语言内部用指针实现(如何实现?)。
2. 对一般应用而言,把引用理解为指针,不会犯严重语义错误。
引用是操作受限了的指针(仅容许取内容操作)。


思考:

实际上“引用”可以做的任何事情“指针”也都能够做,为什么还要“引用” 
这东西? 
答案是“用适当的工具做恰如其分的工作”。 
指针能够毫无约束地操作内存中的如何东西,尽管指针功能强大,但是非常危险。 
就象一把刀,它可以用来砍树、裁纸、修指甲、理发等等,谁敢这样用? 
如果的确只需要借用一下某个对象的“别名”,
那么就用“引用”,而不要用“指针”, 
以免发生意外。比如说,某人需要一份证明,
本来在文件上盖上公章的印子就行了,如 
果把取公章的钥匙交给他,那么他就获得了不该有的权利。 
              -----------《高质量C++编程》

【上篇】
【下篇】

抱歉!评论已关闭.