IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> auto关键字与空值指针——十分钟手撕C++基础 -> 正文阅读

[C++知识库]auto关键字与空值指针——十分钟手撕C++基础

传统艺能😎

小编是双非本科大一菜鸟不赘述,欢迎大佬指点江山(QQ:1319365055)
此前博客点我!点我!请搜索博主 【知晓天空之蓝】

🎉🎉非科班转码社区诚邀您入驻🎉🎉
小伙伴们,打码路上一路向北,背后烟火,彼岸之前皆是疾苦
一个人的单打独斗不如一群人的砥砺前行
这是我和梦想合伙人组建的社区,诚邀各位有志之士的加入!!
社区用户好文均加精(“标兵”文章字数2000+加精,“达人”文章字数1500+加精)
直达: 社区链接点我

🎉🎉🎉倾力打造转码社区微信公众号🎉🎉🎉
在这里插入图片描述


在这里插入图片描述

auto🤔

auto 作为C++里面的关键字,早期 C++98 就有了,当实他的含义是具有自动存储器的局部变量,但唯一的遗憾就是没人去用他,他拥有自动的生命周期,这是多余的,因为就算不使用 auto 声明变量依然有自动的生命期,除非依靠 static 来延长周期。

到了 C++11 中,auto 有了全新的定义:变量的自动推断 。他作为一个全新的类型指示符来指示编译器,声明的变量必须由编译器在编译时推导而得,比如像这样:

int main()
{
int num = 5;
auto a = num;//a为int类型
auto b = 'a';//b为char类型
auto c = test();//c为函数返回值类型
}

说到这里我们就可以趁机了解一下 C++ 的一个运算符:typeid ,使用格式是 typeid(变量名).name()

typeid 的作用是查看变量的类型,比如上面的三个变量我们拿来试一试

	cout << typeid(a).name() << endl;
	cout << typeid(b).name() << endl;
	cout << typeid(c).name() << endl;

在这里插入图片描述

价值🤔

像上面那样用 auto 是完全没有意义的,他真正的价值体现在我们以后的场景,在学习 STL 库时会接触到两个容器,其实就是数据结构,他们是 map 和 string,咱先放出来大家体会一下:

std::mapstd::string,std::string::iterator it = dict.begin();
auto it = dict.begin();

总的来说,精髓就俩字:偷懒!

auto 第二个应用就是 范围for,C语言里面我们如果要遍历一个数组得这样:

int arr[]={1,2,3};
for(int i =0;i<sizeof(arr)/sizeof(int);i++)

现在C++只需要 auto 就行了,其原理就是 auto 依次自动获取 arr 中的数据,赋值给 e ,自动判断结束

    int arr[]={1,2,3};
	for (auto e : arr)

但是这也只是表面上在遍历,如果我需要对遍历到的元素进行操作,就不能直接拷贝,自然又会用到我们的引用:

int arr[]={1,2,3};
for(auto& e:arr)
{
 e *= 2;
}

但是注意 ,不是哪里都可以玩 auto

  1. auto 不能拿来作为函数参数,形参设置 auto 时,我们的编译器无法堆实参类型进行推导
  2. == auto 不能用来声明数组==,为了避免和 C++98 混淆,C++ 只保留了 auto 作为类型指示符的用法
  3. auto 不能用作缺省参数

空值指针🤔

就是我们的空指针,和之前我们之前空指针类比一下:

int* a = 0;
int* b =NULL;
int* c = nullptr;

我们以后会采取第三种 nullptr 的写法,其实三种的本质是一样的,但是前两种并不规范。还是那句话,C++的修改都是在补C语言的坑,我们的 NULL,0 其实默认的类型是整型的0,nullptr 才是实至名归的 “空指针”
在这里插入图片描述
换句话说 C语言 要真正做到空指针只能写成((void*)0)

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-05-14 09:47:23  更:2022-05-14 09:47:31 
 
开发: 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:17:54-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码