指针和引用的区别


概述

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;才能修改所指对象的值,而不改变指针的指向,而对一个引用赋值,则会直接修改引用所引变量的值