引用和指针的区别

今天看书时无意中看到了一个 int &a;本来想简单的百度一下就以为可以解决问题了,但是后来又不止一次的遇到这个问题,自己脑海中还是没有对引用有清晰的理解,所以写个博文来简单总结一下。

1.指针可以在运行时改变所指向的值,但是引用一旦与某个对象绑定后就不可以改变了;

2.编译时,“符号表“记录的是变量名和变量地址,指针在符号表上记录的是指针变量的地址,而引用记录的是引用地址的地址值,而符号表在生成后就不会再改,所以指针可以改变指向的值,而引用就不可以再改变了;

3.指针在定义时会被分配内存空间,而引用不会被分配内存空间,是和引用对象共用一个内存空间,当然,引用可以改变那个内存空间的值;


所以,引用本质上是一个变量的别名。


例子:

int i;

int *a = &i;//这里a是一个指针,它指向变量i

int &b = i;//这里b是一个引用,它是变量i的引用,引用是什么?它的本质是什么?下面会具体讲述

int * &c = a;//这里c是一个引用,它是指针a的引用

int & *d;//这里d是一个指针,它指向引用,但引用不是实体,所以这是错误的

void function(int &a)

{
a = 100;
}

int main()

{
int x = 200;

function(x);

return(0);
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值