当前位置: 首页 > news >正文

广州营销型网站建设培训长沙优化官网服务

广州营销型网站建设培训,长沙优化官网服务,wordpress 皇冠主题,手工制作图片作品C练级之初级:第五篇 第五篇 C练级之初级:第五篇1.auto关键字2.for循环改进3.指针空值nullptr4.内联函数4.1内联函数的概念4.2内联函数的注意点 总结 1.auto关键字 🤔什么是auto(automatic的缩写,自动的意思)关键字? au…

C++练级之初级:第五篇

第五篇

  • C++练级之初级:第五篇
    • 1.auto关键字
    • 2.for循环改进
    • 3.指针空值nullptr
    • 4.内联函数
      • 4.1内联函数的概念
      • 4.2内联函数的注意点
  • 总结

1.auto关键字

🤔什么是auto(automatic的缩写,自动的意思)关键字?

auto是自动推导类型的关键字,在编译阶段,根据表达式右边的表达式自动推导表达式左边的类型;
在这里插入图片描述
在这里插入图片描述
你们可能不相信,为了查看类型,介绍一个 操作符typeid().name()

在这里插入图片描述

🤔🤔auto关键字是解决什么问题呢?

当类型过长时我们就可以用auto关键字,但是其实typedef也是可以的,只是typedef要先知道类型也就是说你要先打一遍这个类型😒;

🤔🤔🤔auto关键字有什么注意点?

  1. auto右边一定要初始化;
    在这里插入图片描述

  2. auto定义多个变量时这些变量类型一定要一致;
    在这里插入图片描述

  3. auto不能推导数组;
    在这里插入图片描述

  4. auto不能做函数参数;

在这里插入图片描述


所以总结一下,一般只有当数据类型过长时,我们用auto,for循环中我们用auto,其他情况下我们很少很少用auto;


2.for循环改进

😁很明显,for循环的改进是解决C语言中for循环的书写问题的;

在这里插入图片描述

🤔🤔刚才不是说auto用在for循环中吗,那么怎么用呢?

在这里插入图片描述

在这里插入图片描述

😁那么这段C++的for循环代码的意思是什么?
代码意思:依次将arr中的元素赋值给e(e是element,元素的意思,你也可以取其它名字),然后一个一个打印;
适用数组与容器;
可以用break,continue等关键字;


🤔🤔🤔如何修改数组元素呢?

用引用类型就可以修改数组了;

在这里插入图片描述

👉但是有一个点要注意👈

在这里插入图片描述

3.指针空值nullptr

🤔C语言不是有空指针NULL了吗?

在这里插入图片描述
按理来说第一个应该是int,第二个应该是int*;

看看NULL的定义

#ifndef NULL
#ifdef __cplusplus
#define NULL 0
#else
#define NULL ((void *)0)
#endif
#endif

可以看到,NULL可能被定义为字面常量0,或者被定义为无类型指针(void*)的常量;
NULL是一个宏,会直接替换,而nullptr是一个关键字,表示空指针的意思;

为了更好的区别空指针和0,所以引入了nullptr关键字


在这里插入图片描述
注意:

  1. 在使用nullptr表示指针空值时,不需要包含头文件,因为nullptr是C++11作为新关键字引入的
  2. 在C++11中,sizeof(nullptr) 与 sizeof((void*)0)所占的字节数相同 。
  3. 为了提高代码的健壮性,在后续表示指针空值时建议最好使用nullptr。

4.内联函数

🤔内联函数是解决C语言什么问题?

在这里插入图片描述
我们从跨过表面看看内部:

在这里插入图片描述
😒我们可以观察出,像这种频繁调用且汇编代码量并不大的函数,每次都要建立函数栈帧,开销太大了😒;


🤔🤔如何高效解决像这种频繁调用的且汇编代码量很少的函数呢?

在以前学习C语言时,我们可以试试用宏去解决

在这里插入图片描述


总结一下宏在这里的优缺点:

  • 优点:不需建立函数栈帧,更高效(替换操作);
  • 缺点:写法太复杂,可读性差,不能调试;

🤔🤔🤔那么有没有更好的解决方案呢?

这就需要介绍内联函数了;

在这里插入图片描述


4.1内联函数的概念

inline修饰的函数叫做内联函数,编译时C++编译器会在调用内联函数的地方展开,没有函数调用建立栈帧的开销,内联函数提升程序运行的效率。


这样看来,内联函数,既不需要建立函数栈帧,不复杂,可读性好,可以调试,高效,是对宏的优化,也是对频繁调用的且汇编代码不多的函数的一种优化;

在这里插入图片描述

🤔🤔🤔🤔既然内联函数这么好,那我们能不能在每个函数钱都加上inline呢?

4.2内联函数的注意点

  1. 注意:
    内联函数是适用于频繁调用的且汇编代码不多的函数
  2. inline对于编译器而言只是一个建议,最终的结果由编译器定,一般频繁调用且汇编代码量很少的函数编译器采用inline,对于递归或者代码量很大的情况下编译器不采用递归。

🤔🤔🤔为什么我的代码量便很少编译器却没有采用内联函数呢?

在这里插入图片描述

因为在默认的debug版本下,inline不会起作用,否则不方便调试,所以需要以下设置:
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述


  1. . inline不建议声明和定义分离,分离会导致链接错误。

在这里插入图片描述

在这里插入图片描述

因为inline函数是在编译时直接展开,没有地址,所以在链接时找不到声明所对应的定义,故报链接型错误;

在这里插入图片描述

总结内联函数

  • 被inline修饰的函数叫做内联函数;
  • 内联函数是适用于频繁调用的且汇编代码不多的函数,解决函数频繁开辟栈帧的开销;
  • inline对于编译器而言只是建议;
  • 内联函数的声明和定义不能分开;

总结

今天主要学习了auto关键字,nullptr关键字,for循环的改进,内联函数是什么及其注意点,如果喜欢本篇不妨留下一个❤️;

请添加图片描述

http://www.yayakq.cn/news/308894/

相关文章:

  • discuz网站建设教学视频网站建设经验与团队
  • 学院网站建设项目的成本计划书建筑模板使用寿命多久
  • 做柱状图饼状图好看的网站jsp网站建设项目实战总结
  • python网站开发视频项目vi设计公司
  • 无锡梦燕服饰网站谁做的公司级别网站开发
  • 做网站怎么上传图片深圳品牌网站建设服务
  • 3 建设营销型网站流程图wordpress怎么安装多说
  • 做一个展示型网站多少钱模板网站和定
  • 门户网站建设方案专门做考研的网站
  • 做企业网站推广多少钱网络推广活动策划
  • 大学网站开发网站设计服务费一般多少钱
  • 高端医疗网站开发前端开发工程师是干什么的
  • 中国建设网站简州新城土地整改项目建易网官网
  • 域名大全免费网站6入空间网站免费观看
  • 成立学校网站建设小组免费微网站系统源码
  • 网站建设与维护书籍郑州专业网站推广公司
  • 体育网站建设视频常见的电子商务网站有哪些
  • 靖江做网站哪家好百度网站html验证
  • 如何做中英文网站设计手机端网页
  • 广州番禺桥南做网站建设物流网站的规划
  • 电子商务网站前台建设常用的技术爱淘苗网站开发模式
  • 网站建设与制作价格聊城做企业网站的
  • 网站如何悬挂备案号网站设计与制作是网页吗
  • 建行网站会员有什么用html5网页成品代码
  • 佛山专业网站建设公司推荐android studio怎么用
  • 建设网站实训报告做一般的公司网站需要多少钱
  • 网站服务器设置赤峰市网站建设
  • 深圳专门做写字楼的网站完备的常州网站推广
  • 微信公众号授权给网站qq个人中心官网
  • nodejs 做网站怎么制作网页设计作业