int a=10;
int &b=a; 引用:必须在定义的时候初始化,无空引用,且引用不分等级。
1、从内存上分配看
指针:指向具体的内存空间,是间接访问变量,指针自身消耗内存空间
其指向①可变的(除非用了const)②不一定存在,如空指针NULL
引用:【不用分配内存区域—引用(别名而已)的地址其实就是被引用对象的地址】必须一开始就指向一个存在的对象(创建时必须初始化,不能为空)
2、从编译上看
程序在编译时分别将指针和引用添加到符号表上,符号表上记录的是变量名及变量所对应地址等【符号表生成后不再改变】
故指针的名字和指针的地址不能改变,但是指针中地址空间内存放的地址能够改变(指针变量的值可以改) 而引用指向的不能改。
int a;
int