相同点:
1)都是地址的概念
2)当改变指针指向内存的值或者改变引用的值时,原值都会发生改变
不同点:
1)指针是一个实体,而引用仅是个别名;
2)引用使用时无需解引用(*),指针需要解引用;
3)引用定义时必须初始化,且指向的对象不再改变;指针可以先定义后赋值,指向的对象可以改变;
4)引用没有 const,指针有 const,const 的指针不可变;
5)引用不能为Null,指针可以为Null;所以引用在使用时不需要判空,而指针每次使用前尽量要判空;所以使用引用效率要高一些。
6)“sizeof 引用”得到的是所指向的变量(对象)的大小,而“sizeof 指针”得到的是指针本身(所指向的变量或对象的地址)的大小;
7)指针++是指向下一块内存单元的内容,引用++是引用的对象进行自增。