指针和引用的区别
1.指针和引用的本质
指针的本质是一个变量,指针变量存放的时内存地址。所以,指针的大小只与当前平台相关,32位平台下指针大小是4个字节,64位平台下指针大小是8个字节。
引用的本质是“变量的别名”,对于int m; int &n = m;
n就是m的别名,对 n 的任何操作就是对m的操作。
2.指针和引用的声明和初始化
指针指向的是内存地址,声明时可以不初始化,即p = NULL;
引用是其他变量的别名,为非实体,所以声明时必须初始化,并且初始化值不能为空。
3.指针和引用的使用
指针在初始化和使用时都可以为空,所以在使用指针之前需要进行判空。
引用在声明时就需要赋非空值,所以引用一经声明(初始化)即可使用。
指针变量存放的时内存地址,所以在其生命周期内可以更改为同类型其他变量的地址。
引用是某个变量的别名,在它的生命周期内不能成为其他变量的别名。
指针传参和引用传参效率是一致的,但是由于指针在使用前需要进行判空,稍微影响效率。