执行结果:
引用:引用相当于“别名”,它的底层是依靠指针来实现的
- 引用一定要初始化
- 底层使用指针支持,在所有变量使用的地方系统会自动解引用
- 引用不可以引用不能取地址的数据(无地址)
- 引用不能改变
- 引用变量时,使用的是引用变量所引用的变量
- C++ 中(const int &)常引用可以引用不能取地址的数据,因为数据会生成一个临时量,常引用引用引用临时量。
引用与指针的区别
- 指针是一个实体,系统会为指针开辟空间,存储所指向内存区域的地址,而引用仅仅是一个别名,不需要进行并没有内存空间。
- 引用必须且只能初始化一次,指针不用并可以改变指向。
- 引用不能为空,而指针可以指向空。
- 使用sizeof对引用计算大小,得到的结果是所指向的对象的大小,而sizeof指针得到的结果是指针得大小。
- 引用的++(自增运算)是其指向的对象本身的运算,而指针的++是内存地址的++
- 引用可以直接修改变量的值,而指针需要通过地址解引用修改变量的值
- 指针可以有多级指针(**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==](https://i-blog.csdnimg.cn/blog_migrate/77ee3665a3be8182741ef5820257fe3e.png)