| |
|
开发:
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++入门(三)引用,内联,auto+nullptr -> 正文阅读 |
|
[C++知识库]C++入门(三)引用,内联,auto+nullptr |
目录 一、引用定义
举例特性
常引用在变量前 或 引用前加 const ,使其变成常量后加引用或变成常引用 取别名原则对原引用的变量,权限只能缩小或相等,不能放大。 权限放大取别名相当于改,是增大权限的操作,常量是不支持的,因此会报错。 权限相等权限缩小注意1.常量直接加别名需要加const 常量是不可改的,不加const相当于权限的放大,加const是权限相等的操作 ?2.给变量赋予不同类型的别名要加const
?使用场景做参数
做返回值函数的返回值是一个临时变量
和指针的比较
二、内联函数概念
在c语言中,如果一个函数多次调用,那么每次调用都要开辟栈帧,效率会大幅降低。c语言的解决方案是用宏来实现函数的功能,在调用时直接替换展开,就没有了压栈开销,提高效率。 为什么要用inline?在c中,函数是容易写的,但是用宏来实现函数,往往会出现问题,最常见的就是替换后的优先级问题。 例如:ADD函数
用宏来实现:
错误示范:
而c++中 inline 的出现就是为了解决宏难理解,且容易写错的问题。 使用示例直接在函数前加 inline 即可,不容易写错。
inline可调试
在Debug版本下,inline 和 宏 在编译中都不会展开,直接是 call ADD ?更改如下完成上述操作后,再次进行调试,转到反汇编: 对宏,没有什么改变 ?对inline,可支持调试 ?特性
三、auto关键字定义
用法一般例子
注意不能直接auto+变量,不允许没有初始化的变量使用auto 例如: 即使直接使用a也不行 输出变量类型?如何判定编译器已经识别出来变量的类型呢? 记住输出变量类型的固定格式:
?指定auto的类型
同一行定义多个变量
auto正确用法
范围for循环依次自动取数组中的数据,赋值给变量e,自动结束,更加方便 在这里可以对比一下更改数组内容时的操作 用c语言的for更改数组的值那么c++中局部for循环可以直接做到吗??原因: e是一个变量,对变量进行操作,是不影响原数组中的数据的,因此这样写,数组中的数据不会被影响。 变量可以随便取,不用非得是e 解决方法:引用既然e是变量,对原内容无影响,那么可以将变量变为数组元素的别名 对e操作即是对数组内容的操作 方法如下: ?范围for循环必须使用auto吗?不是的,只要是数组元素类型即可,整型数组--int ,字符类型--char …… 什么数组类型都可以用auto,更加统一方便 auto不能推导的场景
?四、指针空值nullptr(C++11)?c++中空指针推荐使用 nullptr 因为在c++中,NULL和 0是不规范的 NULL实际是一个宏,在传统的C头文件(stddef.h)中会有:
因此c++中NULL和0是一个东西,会有缺陷,比如:
在我们的认识中,0是整型 ,输出5 NULL 是空指针,应输出6 结果并非预期值 用nullptr可以解决这个问题 ?因此在c++中写空指针的话,推荐使用nullptr |
|
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 19:13:51- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |