| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> C++知识库 -> 【C++入门】烦人的引用 -> 正文阅读 |
|
[C++知识库]【C++入门】烦人的引用 |
文章目录1、引用的概念??引用不是定义一个新的变量,而是给已有的变量定义一个别名,编译器不会给引用开辟内存空间,它和它引用的变量共用一块空间。 类型& 引用变量名(对象名) = 引用实体; 比如:
ai 就是 a的别名,ai 是 a的另一个称号。
? 2、引用的价值2.1 做参数看代码:
有效避免二级指针的使用
可见,有些指针能实现的地方,引用也能实现。 2.1 做返回值引用的正确使用: 传值返回
要想清晰的理解这段代码,我们得借助函数栈帧知识。 为什么要返回临时变量? 引用返回
Count栈帧销毁后,由于n存储在静态区,直接返回n的引用,这一过程虽然产生了临时变量但是返回引用所以不开辟空间。 传值返回
与之前传值相比,n的值存放在栈区随着Count函数销毁也会被销毁,但销毁之前,也会传一个临时变量给ret,这个临时变量开辟空间。 注意:这里的销毁指的不是开辟Count的那块区域被销毁了,而是依然能访问也能修改,只是非法的,并且那块区域的数据已经不受保护了,读取的数据都是不确定的,相当酒店退房一样。 ? 引用返回
由于引用返回产生的临时变量不开辟空间,那么在n销毁后,返回的n的引用也就构成了非法访问。 总结:
? 3、引用的意义3.1 传引用做参数的意义减少拷贝,提高效率,能修改参数
4w字节的数据,100w次的调用。 3.2 传引用返回值的意义?
当数据量或返回次数越多,这个差距也会越大。 4、引用和const4.1 引用的权限const使得变量不能修改,使得变量只有只读权限,如果引用该变量,那么对应的引用类型也必须带上const,权限也只有只读。(权限不能放大) 如果变量有读和写的权限,那么引用的权限可以只读。(权限的缩小)
const引用避免传参的限制
以上的函数调用都能在func(const int&x)中成功。 并且上面两个函数构成函数重载。 4.2 const 引用修饰常量?
所以之前Func(10)为什么可以调用,也就解决了。
?
5、引用和指针区别在语法概念上引用和本体共用一块空间,指针需要开辟一块内存存储地址。
|
|
C++知识库 最新文章 |
【C++】友元、嵌套类、异常、RTTI、类型转换 |
通讯录的思路与实现(C语言) |
C++PrimerPlus 第七章 函数-C++的编程模块( |
Problem C: 算法9-9~9-12:平衡二叉树的基本 |
MSVC C++ UTF-8编程 |
C++进阶 多态原理 |
简单string类c++实现 |
我的年度总结 |
【C语言】以深厚地基筑伟岸高楼-基础篇(六 |
c语言常见错误合集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 10:12:38- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |