C++中指针和引用的区别 下载本文

内容发布更新时间 : 2024/12/25 9:14:09星期一 下面是文章的全部内容请认真阅读。

C++中指针和引用的区别

指针和引用的定义和性质区别:

(1)指针:指针是一个变量,只不过这个变量存储的是一个地址, 指向内存的一个存储单元;而引用跟原来的变量实质上是同一个东西,只不 过是原变量的一个别名而已。如:

int a=1;int *p=&a;

int a=1;int &b=a;

上面定义了一个整形变量和一个指针变量 p,该指针变量指向 a 的存 储单元,即 p 的值是 a 存储单元的地址。

而下面 2 句定义了一个整形变量 a 和这个整形 a 的引用 b,事实上 a 和 b 是同一个东西,在内存占有同一个存储单元。

(2)可以有 const 指针,但是没有 const 引用;

(3)指针可以有多级,但是引用只能是一级(int **p;合法 而 int &&a 是不合法的)

(4)指针的值可以为空,但是引用的值不能为 NULL,并且引用在 定义的时候必须初始化;

(5)指针的值在初始化后可以改变,即指向其它的存储单元,而引 用在进行初始化后就不会再改变了。

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

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

相同点:

1. 都是地址的概念;

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

区别:

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

引用使用时无需解引用(*),指针需要解引恒为真,sizeof(T)

== sizeof(T&) 恒为真,但是当引用作为成员时,其占用空间与指针 相同(没找到标准的规定)。

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