实质,引用其实质是可用作其他变量的别名的一个名称,对引用的操作与对变量直接操作完全一样。;指针的实质是存储另一个变量地址的变量。
其区别主要体现在以下几个方面:
1、引用(reference)时一个变量的别名,因此不占内存;而指针(point)是一个整形变量需要占用一定的内存大小,通常是以能够存放内存地址为标准,例如32位机器是32位及4个字节,64位是64位的,即8个字节;
2、引用中&不是求地址运算,而是起标识作用;
3、不能建立引用的引用,不能建立指向引用的指针。因为引用不是一种数据类型,所以没有引用的引用,没有引用的指针,但可以建立指针的指针;
例如:
int n;
int &&r=n;//错误,编译系统把"int &"看成一体,把"&r"看成一体,即建立了引用的引用,引用的对象应当是某种数据类型的变量
int &*p=n;//错误,编译系统把"int &"看成一体,把" *p "看成一体,即建立了指向引用的指针,指针只能指向某种数据类型的变量。
引用与指针的相同之处:
1、类型标识符都是指目标变量的类型;
2、声明引用时,必须同时对其进行初始化,指针可以初始化为空,引用却不可以.