指针和引用的区别

13 篇文章 0 订阅

执行结果:

引用:引用相当于“别名”,它的底层是依靠指针来实现的

  1. 引用一定要初始化
  2. 底层使用指针支持,在所有变量使用的地方系统会自动解引用
  3. 引用不可以引用不能取地址的数据(无地址)
  4. 引用不能改变
  5. 引用变量时,使用的是引用变量所引用的变量
  6. C++ 中(const int &)常引用可以引用不能取地址的数据,因为数据会生成一个临时量,常引用引用引用临时量。

引用与指针的区别

  1. 指针是一个实体,系统会为指针开辟空间,存储所指向内存区域的地址,而引用仅仅是一个别名,不需要进行并没有内存空间。
  2. 引用必须且只能初始化一次,指针不用并可以改变指向。
  3. 引用不能为空,而指针可以指向空。
  4. 使用sizeof对引用计算大小,得到的结果是所指向的对象的大小,而sizeof指针得到的结果是指针得大小。
  5. 引用的++(自增运算)是其指向的对象本身的运算,而指针的++是内存地址的++
  6. 引用可以直接修改变量的值,而指针需要通过地址解引用修改变量的值
  7. 指针可以有多级指针(**p),引用只有一级
#include<iostream>
using namespace std;
int main()
{
	int a = 10;
	int& b = a;
	printf("a中的数据:%d  ",a); 
	printf("a的地址:%x\n",&a);
	printf("b中的数据:%d  ",b);
	printf("b的地址:%x\n",&b);
	int * p = &a;
	printf("p中的数据:%d  ",*p);
	printf("p指向的地址:%x\n",&p);
	//尝试修改引用和指针的指向 
	int c = 20;
	//&b =c;  //error,&b是不可修改的左值
	p = &c; //ok
	return 0;
}
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值