指针和引用的区别

  1. 指针是一个实体,存放的是地址,引用只是一个别名
  2. 引用在定义的时候被初始化,之后不可变,指针可变
  3. 引用不能为空,指针可以为空
  4. 指针和引用的自增(++)运算意义不同
  5. 引用初始化后不可改,没有const,指针可以为const
  6. 程序为指针分配内存,而引用不需要
  7. Sizeof引用得到所指变量或对象的大小,指针得到的是本身也就是指向对象地址的大小
  8. 指针和引用传递参数方式不同,指针传递参数本质上是值传递,只是传递的是地址值,而对形参的操作不会影响指针对象本身(若要改变指针对象的实参,需用指针的引用或指针的指针),引用传递传进来的是实参的地址(引用符合即为取址符合),对形参的操作都被处理成间接寻址,
  9. 二者都是地址的概念,指针指向一块内存,它的内容是所指内容的地址;而引用是某块内存的别名

 一个小例子

//函数调用的时候,这里会执行 a = aa; b = bb,
//a和b是两个新的变量,他们的值改变不会改变aa和bb
void swap1(int a, int b){
	int tmp = a;
	a = b;
	b = tmp;
}
//函数调用的时候,这里会执行 a = &aa; b = &bb,这里&的意思是引用,a,b是aa和bb的引用
//a和b是aa和bb的别名,其实本质就是aa和bb,就换了个说法而已,他们的值改变也就是改变aa和bb
void swap2(int &a, int &b)
{
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值