2.5 引用和指针

//邪恶的双人组
在介绍引用和指针之前,先说明一个很容易造成误解的重点:符号在不同地方的使用有着不同的含义,在这里是 * 和 & 这两个符号。
 
* 和 & 既能作为表达式里的运算符,同时也可以作为声明的一部分出现。当作为运算符时,* 的含义是解引用符,& 的含义是取地址符。在声明语句中,二者用于组成复合类型,也就是引用和指针。
 
//在对这两个符号心中有一个了然的认识之后,对于关于引用和指针的操作就不会容易迷茫和不解
 
引用
 
引用(此处所说的是左值引用,右值引用后续再提)是某个对象所绑定的别名——由此引出了引用的三个基本特征:1.引用不是对象;2.引用绑定之后不能解绑;3.引用必须初始化。
 
根据引用的三个基本特征,再引申出引用的基本操作也就不难理解:1.引用必须与对象绑定,不能与字面值等非对象类型绑定(类似于1=2的操作是没有任何意义并会引发错误的);2.对引用的操作就是对引用所绑定的对象的操作;3.引用并非对象,但是引用是具名的某种类型,定义其类型必须与所绑定的对象的类型一致,否则会引发错
 
指针
 
指针——一个存放所指对象内存地址的对象,与引用的区别在于:1.指针是对象,引用不是,所以指针有自己的地址,而引用没有,所以只存在指针的引用,而不存在引用的指针;2.引用绑定了对象就嫁鸡随鸡、嫁狗随狗,而指针可以三心二意、朝秦暮楚;3.和其他有实际内存地址的对象相同,指针可以不初始化(当然习惯上最好初始化),而引用必须初始化。
 
指针和引用的相似之处在于:定义引用类型必须与它所绑定的对象类型相同,定义指针类型也必须与它所指向的对象类型相同。
 

 
理解复合类型(指针、引用)的关键在于:1.从右向左阅读程序的语法规则;2.对 * 和 &在不同语境下的不同含义能够理解到位。足矣!
 

猜你喜欢

转载自www.cnblogs.com/NK-007/p/9152888.html
2.5