目录
1、引用存在的意义(既然有了指针为何还要有引用,引用的由来)
一、指针&引用的基本概念
说到指针和引用,首先看下变量名的概念:
变量名: 实质上就是一段连续存储空间的别称。
变量名是逻辑层的概念, 变量有类型, 例如 整型(int),字符型(char),单精度浮点型(float),双精度浮点型(double)
地址(可以简单理解成指针)是物理层的感念,每个地址都对应一个存储单元。地址没有类型,但是不同类型的变量占用的地址个数不一样。
变量名和地址之间的映射关系是由编译器决定的。(摘自https://www.oschina.net/question/1783725_2163287)
指针:是一个变量,这个变量存储的是一个地址,指向内存的一个存储单元。
引用: 前面提到 变量名是存储空间的别称,一段存储空间当然可以有多个别称。引用是一个已经定义的变量的别名。
二、引用
1、引用存在的意义(既然有了指针为何还要有引用,引用的由来)
- 引用作为变量的别名,在很多场合可以代替指针,并且具有更好的可读性和实用性。
- 另外不需要验证参数的无效性(如空指针等)提高了编码效率。
https://zh-google-styleguide.readthedocs.io/en/latest/google-cpp-styleguide/functions/#id4 google C++编码指出,函数中需要修改的值用指针传入,不需要修改的值用常引用传入,提高代码可读性。
举个栗子: set_age_point 与 set_age_ref同样可以起到修改变量值的作用,set_age_ref与之前的变量名操作完全一样,可读性更好。
例一:
/****************************
* 理解引用
*/
#include <iostrea