怎么优化网站关键字,app对接wordpress,清智优化北京,河南建设安全监督网站C的auto究竟是何方神圣 前言#x1f64c;auto#xff08;C 11#xff09; 的使用细则auto是什么#xff1f; auto声明的变量是在什么时期被编译器推导出来呢#xff1f;为什么使用auto进行定义变量时#xff0c;必须进行初始化#xff1f; auto 的使用场景auto与指针和引… C的auto究竟是何方神圣 前言autoC 11 的使用细则auto是什么 auto声明的变量是在什么时期被编译器推导出来呢为什么使用auto进行定义变量时必须进行初始化 auto 的使用场景auto与指针和引用结合使用的场景在一行中定义多个变量。 auto不能推导类型的场景有哪些 总结撒花 博客昵称博客小梦 最喜欢的座右铭全神贯注的上吧 作者简介一名热爱C/C算法等技术、喜爱运动、热爱K歌、敢于追梦的小博主 博主小留言哈喽各位CSDN的uu们我是你的博客好友小梦希望我的文章可以给您带来一定的帮助话不多说文章推上欢迎大家在评论区唠嗑指正觉得好的话别忘了一键三连哦 前言 哈喽各位友友们我今天又学到了很多有趣的知识现在迫不及待的想和大家分享一下 都是精华内容可不要错过哟 autoC 11 的使用细则
auto是什么
auto最早产生的其实是在C98后面C对auto进行了全新的定义。本篇文章讨论的是C 11的auto。auto主要是用来自动推导类型的一个关键字。随着程序越来越复杂程序中用到的类型的也越来越复杂。主要体现在
类型太长含义不明确容易出错。
有人可能会说可以用typedef来给类型定义但是我们有这样的现实需求在编程时我们常常要把表达式的值赋值给变量。这就要求在声明变量的时候必须知道表达式值的类型。因此单单靠typedef是无法满足的。而C11的auto就可以根据表达式的值自动推导出类型。仅仅使用auto就能够代替一长串的类型名简化了代码也不容易出错。
auto声明的变量是在什么时期被编译器推导出来呢
在C11中auto不再是C98中做一个存储类型指示符而是作为一个新的类型指示符来指示编译器。auto声明的变量是在编译期由编译器推导出来的。
为什么使用auto进行定义变量时必须进行初始化
因为在编译阶段编译期需要根据表达式的结果推导出auto的实际类型。因此auto比非是是一种类型声明是类型声明时的占位符。当在编译时期再替换为其实际类型。
auto 的使用场景
auto与指针和引用结合使用的场景
用auto声明初始化指针时用auto 和auto* 都没有任何的区别。但是用auto声明初始化引用时auto必须加。
这里举一个例子
int main()
{int x 10;auto a x;auto* b x;auto c x;cout typeid(a).name() endl;cout typeid(b).name() endl;cout typeid(c).name() endl;return 0;
}
上段程序的运行结果为 在一行中定义多个变量。
auto支持在一行中同时定义多个变量。但是需要注意的是这些变量必须都是同一个类型的变量。因为编译器智慧根据auto第一个变量进行对其类型的推导然后根据推导出的类型去定义后面的变量。如果前后变量类型不一样就会导致编译错误。 auto a 1, b 2;auto c 1.1, d 2.2;cout a b endl;cout c d endl;注意不要和C98的auto混淆。C11给auto进行了全新的定义只保留了auto作为类型指示符的用法。auto在范围for中起到非常重要的作用。也在lambda表达式等进行搭配使用。 auto a 1.1, b 2;auto c 1.1, d 2.2;cout a b endl;cout c d endl;auto不能推导类型的场景有哪些
auto不能用来作为函数的参数。 原因因为编译器不能够对auto什么的变量进行实际类型的推导。auto不能直接用来声明数组。
总结撒花 希望大家通过阅读此文有所收获 如果我写的有什么不好之处请在文章下方给出你宝贵的意见。如果觉得我写的好的话请点个赞赞和关注哦~