**inline**与**volatile**关键字

每日一面经C++(inlinevolatile关键字)–10.13
   不知不觉面临找实习的处境,仔细回顾自己学习的内容,大多都很零散,日历做了慢慢的安排,不知之后能否坚持下去,但是不开始做是永远不会进步。

inline 关键字
   inline是声明内联函数的声明,因为用函数名调用的话,会进入栈空间,返回的时候也会从栈空间出来,这里影响时间效率。如果对代码程序内存的变量存储区与各个区域不是很熟悉,可以看看这篇文章
https://blog.csdn.net/jirryzhang/article/details/79518408?biz_id=102&utm_term=C++%E5%86%85%E5%AD%98%E5%90%84%E5%8C%BA%E5%9F%9F&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduweb~default-0-79518408&spm=1018.2118.3001.4187

  用了Inline就相当于将代码区的函数改成了函数体内部的代码,直接实现。就不会区通过一些关卡,就跟景区走大门需要安检,如果逃票走小门的话,很快很方便,但是不安全。而且还有编译器决定着这个函数内容是否能直接放在代码区。就跟小门的大小一样,人太胖是进不去的,只能走大门。
**inline**与**volatile**关键字

Volatile 关键词
  这个关键词的意思可变的、易变的。具有以下三个特性:易变性,不可优化性,顺序性
  易变性:程序变为汇编代码的时候,非Volatile变量是直接从原来的寄存器中读取值;Volatile变量却是运行一句代码后的寄存器会被释放,放入内存,然后如果下次用到这个变量在从内存调入寄存器通过运算器计算(不懂寄存器的朋友可以去看看这篇文章https://baijiahao.baidu.com/s?id=1609205781742300284&wfr=spider&for=pc)
**inline**与**volatile**关键字
**inline**与**volatile**关键字

  不可优化性:首先运行程序需要先编译成计算机知道的形式,编译器带了比较机灵的脑袋,它会进行分析代码里的每行代码的可用性。比如下面这个代码
**inline**与**volatile**关键字
编译器通过分析发现,非Volatile变量a,b,c没有被后面自己写的函数调用,只是常量替换,所以汇编语言非常简洁直接将变量值压入栈。

**inline**与**volatile**关键字
对于Volatile变量,就是三个变量仍旧存在,而且还需要将这三个变量读入到寄存器中,然后进一步调用printf函数。第三个特征可参考如下网址:
https://blog.csdn.net/qiaotokong/article/details/12718587