• 当前位置:首页 > 日志 > 解释说明static、const和volatile两个关键字的作用?
  • 博客搬到SAE了,这个还是比较省心的。不用老是为备份担心。
  • 开启友情赞助空间
  • 无聊了:[ 探索发现 ] 一下,精彩文章等着你哦!

解释说明static、const和volatile两个关键字的作用?

2016-03-22 18:39

8,885阅览 2条评 日志 arno

关键字static有三个明显的作用:

1、在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。

2、 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所有函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。

3、在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用。

const 有什么用途?

1、可以定义 const 常量

2、const可以修饰函数的参数、返回值,甚至函数的定义体。被const修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。

volatile问题:

volatile的作用: 作为指令关键字,确保本条指令不会因编译器的优化而省略,且要求每次直接读值。。。

volatile的语法与const是一样的,但是volatile的意思是“在编译器认识的范围外,这个数据可以被改变”。不知何故,环境正在改变数据(可能通过多任务处理),所以,volatile告诉编译器不要擅自作出有关数据的任何假设——在优化起家这是特别重要的。如果编译器说:“我已经把数据读入寄存器,而且在没有与寄存器接触。”在一般情况下,它不需要再读入这个数据。但是,如果数据是volatile修饰的,编译器则是不能做出这样的假定,因为数据可能被其他进程改变了,编译器必须重新读这个数据而不是优化这个代码。就像建立const对象一样,程序员也可以建立volatile对象,甚至还建立const volatile对象。这个对象不能被程序员改变,但可通过外面的工具改变。

volatile对象每次被访问时必须重新读取这个变量的值,而不是用保存在寄存器中的备份。下面时volatile变量的几个例子:

.并行设备的硬件寄存器(如状态寄存器);

.一个中断服务子程序中会访问到的非自动变量(Non-automatic variables);

.多现成应用中被几个任务共享的变量。

一个参数可以const同时也是volatile,一个指针也是可以为volatile的,但是具体编程时要小心,要保证不被意外修改。

1、static关键字的作用,个人经验主要有以下几种:1)函数局部static变量,第一次函数调用被初始化,后续每次调用将使用上次调用后保存的值;2)全局变量中static变量,可以防止被其他文件的代码使用这个变量,有点将这个全局变量设置为private的意味;3)对于static函数来说,效果和2中的变量相同;4)C++类中static方法,不需要实例化访问;5)C++定义static类成员变量,不需要实例化访问,不过需要先定义,定义的时候可以初始化数组。

2、volatile用来声明一个变量,并强制程序在每次使用变量的重新从变量地址读取数据,这是为了防止变量在其他地方被改变,而程序仍然使用没有更新的数据。

本文声明

除非注明,否则文章均为 " 枫林博客 " 原创,转载时请注明文章出处。


作者信息:arno \ 2016-03-22 18:39 \ 枫林博客 \

分类标签:日志

本文地址:http://www.blogfeng.com/%e8%a7%a3%e9%87%8a%e8%af%b4%e6%98%8estatic%e3%80%81const%e5%92%8cvolatile%e4%b8%a4%e4%b8%aa%e5%85%b3%e9%94%ae%e5%ad%97%e7%9a%84%e4%bd%9c%e7%94%a8.html

已经有2 条评论啦
  1. #2    2016-03-28 13:45 回复TA
    微趣味博客:

    博主的一些文章写的真心不错,有经常来您的博客来学习,谢谢博主提供这么好的一个平台,让我们新手可以成长!!!我也建立了一个博客叫做微趣味博客www.wequwe.com 希望博主可以点评一下,给一点建议谢谢!!!另外的做不做友链啊?

  2. #1    2016-06-22 16:30 回复TA
    最美微笑:

    好专业性的词语哦

发表评论

* *



​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​