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

电子商务网站建设与管理试卷6android studio入门

电子商务网站建设与管理试卷6,android studio入门,合肥论坛网站制作,企业建站公司方案auto、范围for、内联函数、宏函数和nullptr 一、auto — 类型推导的魔法#xff08;C 11)1、auto 是什么#xff1f;2、工作原理3、优势4、限制和注意事项 二、范围for (C11)1、基本语法2、优势3、工作原理4、注意事项5、C11#xff1a; 范围 for 循环的扩展#xff1a; 三… auto、范围for、内联函数、宏函数和nullptr 一、auto — 类型推导的魔法C 11)1、auto 是什么2、工作原理3、优势4、限制和注意事项 二、范围for (C11)1、基本语法2、优势3、工作原理4、注意事项5、C11 范围 for 循环的扩展 三、宏函数1、优势2、宏函数的危险 四、内联函数1、基本概念2、工作原理3、优势4、注意事项5、内联函数与编译器优化 一、auto — 类型推导的魔法C 11) C11 引入的 auto 关键字在现代 C 编程中扮演着重要的角色。它不仅使代码更加简洁还提供了更好的可读性和灵活性 1、auto 是什么 auto 是 C 中的一个关键字用于实现类型推导。它允许编译器在变量声明时根据初始化表达式的类型自动推导变量的类型。 → 这样我们可以避免显式指定变量类型减少代码冗余同时保持类型安全。 typeid 可以查看对象类型需要#includetypeinfo 用法: typeid(c).name()c是变量名 2、工作原理 在编译过程中auto 关键字的使用会被编译器替换为实际的类型。 编译器会通过初始化表达式来推导变量的类型然后将推导出的类型替换到 auto 处。这意味着 auto 并不是一个新的数据类型而只是一种方便的声明方式。 3、优势 a. 简洁 使用 auto 可以省略变量类型的冗长声明使代码更加简洁。 b. 可读性 auto 提供了更清晰的代码读者可以更容易地理解代码的含义而不必深入研究类型。 c. 容器迭代 在遍历容器时auto 的使用可以避免手动指定容器类型从而提高可读性和灵活性。 d. 跨平台性 auto 在一些情况下可以帮助提高代码的可移植性因为它减少了对特定数据类型大小的依赖。 4、限制和注意事项 a. 必须在声明时进行初始化 auto 变量必须在声明时进行初始化以便编译器能够推导出其类型。 b. 不适用于函数参数和返回值 auto 通常用于声明变量而不适用于函数参数和返回值的类型。 c. 可能导致意外推导 对于某些表达式auto 的推导可能与预期不符需要小心处理。 d. 不适用于非静态成员变量 auto 不适用于非静态成员变量的声明。 e.不能定义数组 ※auto arr[ ] {1,2,2,1}; //wrong ♥ 数组是一种比较特殊的数据结构其大小和元素类型都是数组类型的一部分而不是表达式的一部分 auto 关键字不能直接用于定义数组是因为数组的大小和元素类型是数组类型的一部分而 auto 只关注初始化表达式的类型推导无法同时推导数组的大小和元素类型。 例如一个 int 数组和一个 double 数组的类型是不同的即使它们的大小相同。而 auto 关键字在推导类型时只关注初始化表达式的类型无法同时推导出数组的大小和元素类型。 然而在 C11 引入的标准中我们可以使用 decltype 关键字来间接推导数组类型 注意定义变量a的时候就不可以加[ ] 使用 decltype 可以将数组的类型精确地推导出来但是仍然无法推导数组的大小 二、范围for (C11) 1、基本语法 范围 for 循环是一种用于遍历容器的现代方式它的基本语法如下 for (element_declaration : container) {// 循环体 }在这里element_declaration 是一个声明用于指定在每次迭代中存储容器中的元素。container 则是要遍历的容器可以是数组、标准容器如 vector、list、map 等或用户自定义的容器类型。 2、优势 a. 可读性提高 语法上更加简洁将遍历的核心逻辑更突出减少了迭代器和索引的干扰。 b. 避免越界错误 避免了手动管理迭代器或索引的问题从而减少了越界错误和其他低级错误的可能性。 c. 自动推导元素类型 自动推导出容器中的元素类型无需显式指定减少冗余信息。 3、工作原理 范围 for 循环实际上是使用迭代器来遍历容器的。编译器会在幕后自动生成迭代器的代码以便访问容器中的每个元素。对于不同类型的容器编译器会使用适当的迭代器因此开发者无需担心不同容器类型的迭代器实现。 4、注意事项 a. 不适用于修改元素 范围 for 循环在遍历容器时只能读取元素不能修改元素的值。如果需要修改元素应该使用传统的 for 循环或迭代器。chu b. 自动推导类型限制 范围 for 循环中的元素类型是自动推导的因此可能会受到类型推导的限制。对于需要精确类型控制的场景可能需要使用传统 for 循环。 c. for循环迭代的范围必须是确定的对于数组而言第一个元素 - 最后一个元素 即是数组的范围但是对于函数传参而言传递数组的时候是以指针传过去的无法确定范围。 5、C11 范围 for 循环的扩展 在 C11 以后的版本中范围 for 循环的功能得到了扩展。 除了遍历容器还可以遍历初始化列表、数组、字符串等。甚至可以使用 auto 关键字来自动推导元素类型。 遍历的原理自动取遍历目标的每一个元素再放到给定的临时变量中自动判断结束。 auto 会根据遍历目标的元素类型自动推导 std::initializer_listint numbers {1, 2, 3, 4, 5}; for (auto num : numbers) {// ... }就是取 numbers 的元素放到 num 中自动判断循环结束。直接写数组的类型也可以 三、宏函数 宏函数是 C 中的一种预处理技术使用预定义的宏名称将代码片段替换为文本。 这种替换在编译前进行→ 不会在运行时引入额外的开销不进行类型检查或语法分析。 例如我们可以使用 #define 来定义宏函数 #define Add(x, y) ((x) (y)) 但是如果写成#define Add(x, y) (x y) 就麻烦了因为是“替换”而不是“调用”x和y有可能是表达式计算结果就有可能与期望值不符 1、优势 a. 强大的代码生成能力 宏函数可以生成复杂的代码片段减少重复性工作提高开发效率。 b. 参数灵活 宏函数可以接受任意数量和类型的参数使其在某些情况下比普通函数更灵活。 c. 编译前处理 宏函数的替换发生在编译前因此不会在运行时引入额外的开销。 2、宏函数的危险 a. 缺乏类型安全 宏函数的替换是文本级别的不进行类型检查。这可能导致意外的类型问题。 b. 难以调试 宏函数的错误可能在编译后才会暴露难以追踪和修复。 c. 可读性和维护性 复杂的宏函数可能会降低代码的可读性和可维护性因为它们隐藏了实际的逻辑。 随着现代 C 的发展许多宏函数的使用场景已经被更安全和可读性更好的特性取代比如内联函数可以提供类似宏函数的性能优势同时也会进行类型检查增加代码的安全性。 四、内联函数 内联说明只是向编译器发出的一个请求编译器可以选择忽略这个请求 1、基本概念 内联函数是通过在函数声明前加上 inline 关键字来定义的函数。 它告诉编译器在每次函数调用处将函数体直接插入而不是传统的函数调用-返回过程。这样可以避免函数调用的开销提高程序的性能。 inline int square(int x) {return x * x; }2、工作原理 内联函数的核心思想是 在编译器将函数调用处的代码直接替换为函数体类似于代码的复制粘贴。 → 空间换时间的思想 这样避免了函数调用和返回的开销但也可能会增加代码的体积。编译器会在合适的情况下自动进行内联不过也可以使用 inline 关键字来显式指示。 3、优势 a. 减少函数调用开销 可以大幅减少函数调用时的开销特别是对于短小、需要频繁调用的函数 b. 提高程序性能 能够在一定程度上减少函数调用的开销从而提高程序的执行速度。 c. 代码可读性 将函数体直接嵌入到调用处使代码更加紧凑特别是对于简单的计算型函数。 4、注意事项 a. 适用范围 内联函数适用于函数体简单且函数调用频繁的情况。对于复杂的函数体内联可能会导致代码体积增大影响缓存效率。 b. 编译器决策 编译器会根据代码的复杂度和上下文来决定是否内联函数。可以使用编译器指示来强制内联但也需要权衡代码大小和性能。 c. 大型函数不适合内联 大型函数的内联可能会导致代码膨胀甚至适得其反。在这种情况下更适合使用传统的函数调用方式。 5、内联函数与编译器优化 现代编译器在优化代码时会考虑是否将函数内联。然而编译器的优化决策可能因编译器版本、编译选项和具体代码而异。因此我们应该了解编译器的优化行为可以使用编译器特定的指示来控制内联行为~~
http://www.zqtcl.cn/news/293180/

相关文章:

  • 如何自己建网站企业网站建站快车的优点
  • 目前做网站的公司有哪些管理系统中的计算机应用
  • 百度网站服务器企业网站报价
  • 网站后台账户如何做会计分录电商数据查询平台
  • 素材动图网站90设计app下载
  • 绍兴网站设计公司网站空间位置是什么
  • 高端网站设计品牌珠海网站建设最新报价
  • 做网站的商家怎么赚取流量费房地产怎么做网站推广
  • 企业网站建设基本流程网站积分方案
  • 网站定位与功能分析网站常见故障
  • 深圳电子商务网站制作桂林市防疫最新政策
  • 北京网站建设备案代理网站建设计划建议
  • 湛江公司做网站wordpress如何设置网站地图
  • wordpress攻防优化方案
  • 义乌市建设银行分行网站宜春静态管理
  • 企业网站优化电话17做网店类似网站
  • 南京网站建设黄页网站大全在线看免费
  • 网站开发过程记录定制西服
  • 长沙有哪些网站建设公司用vue做网站的实例
  • 购物网站模板 php网页设计图片剧中
  • 嘉峪关市建设局网站横沥镇网站建设公司
  • 查找网站软件培训记录
  • 注册网站安全吗制作人漫画
  • jeecms 怎么建设网站嵌入式软件开发兼职
  • 百度怎么自己做网站四川省建设工程交易中心网站
  • 中介如何做网站收客wordpress 运行代码
  • 网页设计与网站建设考试题目如何做建议的网站
  • 网站怎么推广软文政务网站建设存在问题
  • 公司官方网站建设需要多少钱wordpress单页面制作
  • 社群网站建设网站推广的方式有哪几种