static \ const \ volatile 的含义

1.static

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

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

学校在模块内,一个被声明为静态的啊函数只可以被这一模块内的其他函数调用,这个函数被限制在声明他的模块的本地范围内使用

2.const(搜索Dan Saks总结的const)

学校const意味着“只读”

//声明指针在C/C++中是从右往左读
const int a;//常整型数
int const a;//常整型数
const int *a;//指向常整型数的指针(整数不能修改)
int *const a;//指向整型数的常指针(指针不能修改)
int const * a const;//指向常整型数的常指针(整型数 指针均不能修改)

3.volatile

学校被定义为volatile的变量可能会被意想不到的改变,这样编译器就不会假设这个变量的值。优化器在用到这个变量的时候必须每次都小心的重新读取这个变量的值,而不是使用在寄存器中的备份

使用volatile的例子:

学校并行设备的硬件寄存器

学校一个中断服务子程序中会访问到的非自动变量

学校多线程应用中被几个任务共享的变量

一个参数可以是const还可以是volatile,例如,只读的状态寄存器,volatile因为他可能被意想不到的改变,const因为程序不应该试图去修改它。

一个指针可以是volatile,例如,当一个中断服务子程序修改一个指向一个buffer的指针时。

posted on 2015-10-05 09:03  寒叶峰  阅读(473)  评论(0编辑  收藏  举报

导航