(1)sizeof指针==4/8 当平台和编译器确定时,大小唯一,而sizeof引用大小为引用对象的大小
int a=1;
int &ra=a;
//sizeof(ra)==4;
double d=1.0;
double& rd=d;
//sizeof(rd)==8;
(2)指针可以不初始化 但是指针必须初始化
int *p;//OK
int& r;//error
(3)指针可以修改目标(指向不同的目标)但是引用不能修改方向
int *p=&a;//指向a
p=&b //指向b
int& r=a;//引用b
r=b //对a进行赋值
(4)可以声明void指针void* 但是不能声明void引用 void&
void *p;//OK
void &p; //error
(5)可以定义指针的指针(二级指针),但是不能定义引用的引用
int **p;
int &&r;//错误
(6)可以定义指针引用,不可以定义引用的指针
int *p;
int* &rp=p;//指针的引用 本质是引用 引用第一个指针
int& *pr//错误的 引用的指针 本质是指针 指针指向引用
(7)可以定义数组的引用 但是不能定义引用的数组
//数组的引用 本质是引用 引用一个数组
int arr[5]={1,2,3,1023,1024};
int(&rar)[5]=arr;//数组的引用和数组的指针很类似
int a,b,c,d,e;
int& brr[5]={a,b,c,d,e}//引用的数组 Error