引用相当于自动挡的车,指针相当于手动挡的车 。
2.特殊引用const引用
-> 在C++中可以声明const引用。
int a = 4;
const int& b = a;
int* p = (int*)&b;
b = 5; //错误
*p = 5; //正确,可以修改变量a的值
示例:引用的特殊意义。
#include <stdio.h>
void Example()
{
printf("Example:\n");
int a = 4;
const int& b = a;
int* p = (int*)&b;
//b = 5; //这里会编译出错
*p = 5;
printf("a = %d\n", a); //5
printf("b = %d\n", b); //5
}
void Demo()
{
printf("Demo:\n");
const int& c = 1;
int* p = (int*)&c;
//c = 5; //这里会编译出错
*p = 5;
printf("c = %d\n", c); //5
}
int main(int argc, char *argv[])
{
Example();
printf("\n");
Demo();
return 0;
}
3.引用的本质
-> 引用在C++中的内部实现是一个指针是常量。
-> C++编译器在编译过程中用指针常量作为引用的内部实现,因此引用所占用的空间大小与指针相同。
-> 从使用的角度,引用只是一个别名,C++为了实用性,隐藏了引用的存储空间这一细节。
示例:
#include <stdio.h>
struct TRef
{
char& r; //是个引用,字符类型的引用
};
int main(int argc, char *argv[])
{
char c = 'c';
char& rc = c; //c变量的别名
TRef ref = { c }; //c变量的别名
printf("sizeof(char&) = %d\n", sizeof(char&)); //1
printf("sizeof(rc) = %d\n", sizeof(rc)); //1
printf("sizeof(TRef) = %d\n", sizeof(TRef)); //4
printf("sizeof(ref.r) = %d\n", sizeof(ref.r)); //1
return 0;
}
4.引用的存储空间
示例:
struct TRef
{
## 最后
**自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。**
**深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。**
**因此收集整理了一份《2024年嵌入式&物联网开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。**







**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上嵌入式&物联网开发知识点,真正体系化!**
[**如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!**](https://bbs.youkuaiyun.com/topics/618654289)
**由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**!!
内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!**](https://bbs.youkuaiyun.com/topics/618654289)
**由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**!!