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

一. 引用与指针的相同点

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=6
int *pa=a;  //此时pa=6
ra=b;       //ra依然引用a,但a的值变为8
pa=b;       //pa指向b,a的值没改变

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

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

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

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

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值