C++ - 引用的真实面目_c++引用名也是一个地址

引用相当于自动挡的车,指针相当于手动挡的车 。

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年嵌入式&物联网开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。**

![img](https://img-blog.csdnimg.cn/img_convert/160d2fe6facffabe468982d18c3b227e.png)

![img](https://img-blog.csdnimg.cn/img_convert/33cd3ac0a92e17d81de3766e0c8f7dd5.jpeg)

![img](https://img-blog.csdnimg.cn/img_convert/c8fc8bd3f1caba14b9a80bd39b403b66.png)

 ![img](https://img-blog.csdnimg.cn/img_convert/3ba30ca12de8a795bbb04c04206241ef.png)

![img](https://img-blog.csdnimg.cn/img_convert/2be96a0124771b3e8fcbae43be8a5aed.png)

![img](https://img-blog.csdnimg.cn/img_convert/e80008bb4cda8cc6709f9744c3a412e6.png)

![](https://img-blog.csdnimg.cn/img_convert/e1093fcd2f465b742a8b0160fbf68d6d.png)

 

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上嵌入式&物联网开发知识点,真正体系化!**

[**如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!**](https://bbs.youkuaiyun.com/topics/618654289)

**由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**!!


内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!**](https://bbs.youkuaiyun.com/topics/618654289)

**由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**!!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值