Skip to content

pointer and reference

cym edited this page Dec 15, 2017 · 2 revisions

引用和指针的区别

从概念上讲。指针从本质上讲就是存放变量地址的一个变量,在逻辑上是独立的,它可以被改变,包括其所指向的地址的改变和其指向的地址中所存放的数据的改变。

而引用是一个别名,它在逻辑上不是独立的,它的存在具有依附性,所以引用必须在一开始就被初始化,而且其引用的对象在其整个生命周期中是不能被改变的(自始至终只能依附于同一个变量)。

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

  1. 指针指向一块内存,它的内容是所指内存的地址;而引用则是某块内存的别名,引用不改变指向。使用指针之前必须做判空操作,而引用就不必。

  2. 引用不可以改变指向,可以改变初始化对象的内容;指针可以改变指向,而指向其它对象。

  3. 引用的大小是所指向的变量的大小,因为引用只是一个别名而已;指针是指针本身的大小,4个字节。“sizeof 引用”得到的是所指向的变量(对象)的大小,而“sizeof 指针”得到的是指针本身的大小。

  4. 引用比指针更安全。指针可以随时指向别的对象,并且可以不被初始化,或为NULL,存在空指针和野指针。

Clone this wiki locally