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

网站建设文化策划陕西网络公司网站建设

网站建设文化策划,陕西网络公司网站建设,google下载官网,网站空间和主机C学习笔记---003 C知识开篇1、内联函数1.1、什么是内联函数?1.2、解决外部头文件#xff0c;重复定义问题1.3、内联函数的总结 2、auto关键字2.1、auto的作用2.2、auto的总结 3、范围for3.1、什么是范围for#xff1f;3.2、范围for的循环应用 4、指针空值关键字nullptr4.1、… C学习笔记---003 C知识开篇1、内联函数1.1、什么是内联函数?1.2、解决外部头文件重复定义问题1.3、内联函数的总结 2、auto关键字2.1、auto的作用2.2、auto的总结 3、范围for3.1、什么是范围for3.2、范围for的循环应用 4、指针空值关键字nullptr4.1、指针空值的作用 C知识开篇 前言 前篇内容对于C有一个基本认识这篇文章将继续学习C与C语言优化后的语法知识部分。 /知识点汇总/ 1、内联函数 1.1、什么是内联函数? 概念以inline修饰的函数叫做内联函数编译时C编译器会在调用内联函数的地方展开没有函数调用建立栈帧的开销内联函数提升程序的运行效率。 C引出inline关键字 比如这个函数频繁调用100万次如何解决 C语言中就引用的宏宏函数解决。但是要求细节和严谨。 inline常用于修饰频繁调用的函数 #include iostream using namespace std; //int Add(int left, int right) //{ // return left right; //} inline int Add(int left, int right) {return left right; } int main() {int ret 0;ret Add(1, 2);//汇编call --》Add (地址...)//inline修改后成为内联函数。就直接调用函数不用call Add()函数了。return 0; }C引出内联函数主要是用于解决C语言中宏函数容易出现的问题。 回顾宏或宏函数使用宏根本上需要注意的就是括号的正确使用。 1.宏的本质就是预处理阶段的替换。 2.宏本身不是函数 3.不需要分号 4.括号优先级 #include iostream #define ADD(a,b) ((a)(b)) //为什么宏要加里面的括号 //因为a和b也可能是独立的表达式。否则容易出现优先级问题错误。 using namespace std; int main() {int a 0;cin a;//场景1if (ADD(a, 2)){}//场景2int m ADD(a, 2) * 3;cout m endl;return 0; }宏的缺点 1.不容易控制不容易调试 2.语法复杂坑多易错 3.没有类型无法安全检查 对比C的inline和C语言的宏 可见C的内敛函数很好的解决此类大部分问题。 1.2、解决外部头文件重复定义问题 1.声明和定义分离 2.static修改函数链接属性只在当前文件可用。(适用于大函数) 3.inline使其展开就无法call调用。(适用于小函数) #include iostream using namespace std; inline int Add(int a, int b) {cout int Add(int a,int b) endl;return a b; } int main() {Add(2, 3);return 0; }1.3、内联函数的总结 1.inline是一种以空间换时间的做法如果编译器将函数当成内联函数处理在编译阶段会用函数体替换函数调用 缺陷可能是目标文件夹变大优势少了很多调用花销提高程序运行效率。 2.inline对于编译器而言只是一个小建议不同编译器关于inline实现机制可能不同一般建议将函数规模较小不是递归且频繁调用的函数采用inline修饰。 3.内敛说明只是向编译器发出请求编译器可以选择忽略这个请求。 4.inline不建议声明和定义分离分离会导致链接错误因为inline被展开就没有Call函数地址了所以链接就找不到了。 2、auto关键字 2.1、auto的作用 auto会自动推导类型 但是auto同样存在一定的弊端 1.首先适用于自己知道的类型如果单纯的只有auto没有注释和文档说明就比较影响程序的可读性 2.因为要去推导auto接收的类型嵌套太多的时候就很影响代码的阅读性。 #include iostream #include map #include string using namespace std;int Add(int a, int b) {cout int Add(int a,int b) endl;return a b; } auto func(int a, int b) {auto m a b;return m; } int main() {int i 0;int j i;auto k i;//自动判定接收为整型。//auto x; //auto与引用一样必须初始化auto p1 i; //自动判定接收的地址为指针类型。auto* p2 i; //指定为指针类型//auto* p3 i; //错误使用auto r i;//常见的应用于复杂的类型//函数指针/数组指针int(*pf)(int, int) Add;//等价auto自动识别为函数指针auto pf2 Add;//C使用场景cout typeid(pf).name() endl;cout typeid(pf2).name() endl;std::mapstd::string, std::string dict;//std::mapstd::string, std::string::iterator it dict.begin();//等价auto it dict.begin();//注意auto建议不能作参数另外auto可以但不建议作函数返回值嵌套太多不好判断类型。auto ret func(1, 2);//auto嵌套的谨慎使用return 0; }2.2、auto的总结 注意auto不能作返回值另外auto可以但不建议作函数返回值嵌套太多不好判断类型。 但是auto同样存在一定的弊端 1.首先适用于自己知道的类型如果单纯的只有auto没有注释和文档说明就比较影响程序的可读性 2.因为要去推导auto接收的类型嵌套太多的时候就很影响代码的阅读性。 3、范围for 3.1、什么是范围for C引入的范围for由括号里的两部分组成以冒号分割冒号前是用于迭代的变量冒号后是被迭代的范围。 格式 for (类型引用 变量 : 范围) {}3.2、范围for的循环应用 #include iostream using namespace std; int main() {int arr[] { 1,2,3,4,5 };//C语言的for循环for (int i 0; i sizeof(arr) / sizeof(arr[0]); i){arr[i] * 2;}for (int* p arr; p p sizeof(arr) / sizeof(arr[0]); p){cout *p endl;}//C//依次取得数组中元素的值赋值给变量e并且自动迭代直到自动判断遍历结束//for (auto e : arr)//{// cout e ;//}//不加引用是无法修改数组元素的值的因为属于临时拷贝所以需要加上别名才能修改元素值for (auto e : arr){e * 2 ;}cout endl;for (auto e : arr){cout e ;}cout endl;return 0; }数组名作为参数时范围无法明确就无法使用范围for #include iostream using namespace std; //注意:这里看似传的数组但是数组作为参数本质就是转换为指针了 //所以范围无法明确自然就无法使用范围for了。 void func(int arr[]) {for (auto e : arr){cout e ;}cout endl; } int main() {return 0; }总结 1.范围for的使用范围是明确的 2.可以正常的使用continue和break 4、指针空值关键字nullptr 4.1、指针空值的作用 引用新的nullptr解决了C本身自己的底层定义NULL语法时的错误 #include iostream using namespace std;void f(int) {cout f(int) endl; }void f(int*) {cout f(int*) endl; }int main() {f(0);f(NULL);f(nullptr);//等价//f((void*)0);//所以指针初始化就采用nullptr了int* p nullptr;return 0; }
http://www.dnsts.com.cn/news/187129.html

相关文章:

  • 深圳网站设计九曲网站建设科技创新小发明
  • 汕头网站设计价格网站建设私活
  • 南京专门做网站会员播放系统插件wordpress
  • 接单子做网站德州网站建设公司
  • 淄博网站制作优化科技网站制作公司
  • 怎样清理网站后门西宁网站建设王道下拉惠
  • 软件网站开发团队名称网站开发培训实训
  • 乐清建网站公司哪家好电商网站建设行情
  • 英语网站新增两个栏目wordpress伪静
  • 做门户网站广告沈阳网站优化排名
  • 网站建设推广价格手机百度如何发布作品
  • 35互联网站建设怎么样关于wap网站模板下载
  • 智能自助建站系统源码成都住建官网app
  • 网站做百度推广有没有效果网站需要服务器吗?
  • 苍南县规划建设局网站公司信息管理系统
  • 广州骏域网站建设专家手机电脑版被窝家装公司
  • 莞城网站仿做网站建设费用表格
  • 做网站前台需要什么软件怎样建立自己的公众号
  • 保定聊城网站建设标题正文型网站
  • 网站建设设计公司类网站织梦模板 带手机端电商网站运营流程
  • 重庆网站建设开发建设集团是做什么的
  • 晋州市建设局网站河南建网站
  • 网站后台用什么做外贸营销推广方案
  • 旅游网站建设和实现wordpress 帕兰映像 安装教程 wordpress
  • 网站建设的税收分类编码网站建设 业务走下坡
  • 网站备案协议书wordpress主题替换不彻底
  • 成都游戏网站建设建设企业网银u盾网站打不开
  • 功能性的网站设计制作铜陵做网站的
  • 不拦截网站的浏览器wordpress 分享微信
  • 潍坊网站建设培训网站源码模块