C++中引用与指针的区别

来源:互联网 发布:sql界面添加字段默认值 编辑:程序博客网 时间:2024/06/15 06:16

一. 引用与指针的相同点

1.都是指向一个变量的内存地址,底层实现都相同。

    int x = 6;00BE13D8  mov         dword ptr [x],6      int *y = &x;00BE13DF  lea         eax,[x]  00BE13E2  mov         dword ptr [y],eax    int x = 6;00FE13D8  mov         dword ptr [x],6        int &y = x;00FE13DF  lea         eax,[x]  00FE13E2  mov         dword ptr [y],eax   

2.一个const指针可以指向一个const变量;一个const引用可以引用一个const变量。

int x = 6;const int *y = &x;int x = 6;const int &y=x;

3.一个const指针可以指向一个非const修饰的变量;一个const引用也可以引用一个非const修饰的变量。

const int x = 6;const int *y = &x;const int x = 6;const int &y = x; 

二. 引用与指针的不同点

1.引用一旦定义就不能在进行修改,而指针还可以修改。

int a = 6;int b = 8;int &ra = a;//此时ra=6int *pa=a;  //此时pa=6ra=b;       //ra依然引用a,但a的值变为8pa=b;       //pa指向b,a的值没改变

2.指针有多级指针,而引用没有。

int **p=a;int &&p=a;  //没有这种写法

3.引用自加改变变量的内容,指针自加改变了指针指向。

4.在sizeof中含义不同:引用结果为引用类型的大小,但指针始终是地址空间所占字节个数。

5.一旦一个引用被初始化为指向一个对象,就不能再指向其他对象,而指针可以在任何时候指向任何一个同类型对象。

6.引用使用起来比指针更安全。

7.引用在定义时只能对已经存在的变量或对象进行引用,而指针不用可以定义为NULL。