指针和引用的区别
概述
1. 指针是一个独立的变量,拥有独立的地址int a = 10; int * b = &a;
此时指针b的地址和所指对象的地址是不同的,而且指针b中存储的就是变量a的地址,而引用可以理解为和原来的变量就是同一个东西,int a = 10; int & b = a;
此时对引用b和变量a取地址那么这两个地址值是相同的
2. 指针可以只声明不初始化,后面在进行赋值操作,而引用必须初始化话,而且从一而终,不能改变,而指针可以改变指向
3. 可以有多级指针如int **
但不能有多级引用int &&
这个不叫多级引用,这个叫做右值引用
4. 指针可以指向空值,而没有指向空值的引用
5. 使用sizeof
运算符结果就是一个指针的大小也就是4或8个字节,但是对一个引用使用sizeof
计算的引用所指变量的大小
6. 对指针进行赋值操作只会修改指针的指向,而不会修改所指对象的值,需要进行该引用操作*b = 20;
才能修改所指对象的值,而不改变指针的指向,而对一个引用赋值,则会直接修改引用所引变量的值