详解c++指针和引用的区别与联系

 ★ 相同点:

    1. 都是地址的概念;

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

 ★ 区别:

    1. 指针是一个实体,而引用仅是个别名;

    2. 引用使用时无需解引用(*),指针需要解引用;

    3. 引用只能在定义时被初始化一次,之后不可变;指针可变;引用“从一而终” ^_^

    4. 引用没有 const,这是因为引用本身的指向就是不可改变的,所以不需要const来修饰;但是引用的对象可以是常量(const int & a)指针有 const,const 的指针指向不可变;

    5. 引用不能为空,指针可以为空;

    6. “sizeof 引用”得到的是所指向的变量(对象)的大小,而“sizeof 指针”得到的是指针本身的大小=4;

    7. 指针和引用的自增(++)运算意义不一样;一个是所指向的内存地址往后移动一位,一个是引用的对象+1;

扫描二维码关注公众号,回复: 3114304 查看本文章

★联系

    1. 引用在语言内部用指针实现(如何实现?)。

    2. 对一般应用而言,把引用理解为指针,不会犯严重语义错误。引用是操作受限了的指针(仅容许取内容操作)。

引用的一些规则如下:

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

    (2)不能有NULL 引用,引用必须与合法的存储单元关联(指针则可以是NULL)。

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

★  实际上“引用”可以做的任何事情“指针”也都能够做,为什么还要“引用” 这东西?

    答案是:“用适当的工具做恰如其分的工作”。

    指针能够毫无约束地操作内存中的如何东西,尽管指针功能强大,但是非常危险。

    就象一把刀,它可以用来砍树、裁纸、修指甲、理发等等,谁敢这样用?

猜你喜欢

转载自blog.csdn.net/leikun153/article/details/81636629