1.从内存分配的角度
指针会开辟新的内存区域,引用和原来对象共享内存,不会再分配内存空间
2.从初始化角度
指针可以先初始化,然后在给它附值,并且后面还可以修改,比如:int *p,p=&a,p=&b
引用初始化的时候必须赋值,附完值不能在改变 比如:int &b=a; 表示b是a的一个引用,这样b和a绑定在一块,不能再用b去引用其他对象
3.从访问方式
引用是直接访问,指针则是间接访问。
下面来看个例子: 交换a,b的值
#include <stdio.h>
void main()
{
void firstExange(int *a, int *b);
void secondExanget(int &a,int &b);
int c=3,d=4;
int *p = &c;
int *q = &d;
firstExange(p,q);
printf("first:c=%d,d=%d\n",c,d);
secondExange(c,d);
printf("second:c=%d,d=%d\n",c,d);
}
void firstExange(int *a, int *b)
{
int temp;
temp = *a;
*a = *b;
*b=temp;
}
void secondExange(int &a,int &b)
{
int temp ;
temp = a;
a= b;
b=temp;
}
输出结果是first:c=4,d=3 second:c=3,d=4;
可以看出这两种方式都可以实现交换