1. 关键字static的作用是什么?
在C语言中,关键字static有三个明显的作用:
1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。
2)在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。
3)在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用。
2.关键字const:
const 意味着声明的变量为只读变量,其值不可改变。
const int a; a是一个常整型数
int const a; a是一个常整型数
const int *a; a是一个指向常整型数的指针
int * const a; a是一个指向整型数的常指针
int const * a const; a是一个指向常整型数的常指针
前两个的作用是一样,a是一个常整型数。
第三个意味着a是一个指向常整型数的指针(整型数是不可修改的,但指针可以)
第四个意思a是一个指向整型数的常指针(也就是说,指针指向的整型数是可以修改的,但指针是不可修改的)。
最后一个意味着a是一个指向常整型数的常指针(也就是说,指针指向的整型数 是不可修改的,同时指针也是不可修改的)。
3.关键字volatile:
一个定义为volatile的变量是说这变量可能会被意想不到地改变,被定义为volatile的变量,优化器每次用到这个变量时都会重新读取这个值,而不会用保存在寄存器中的值,防止变量被优化。例子:
1)并行设备的硬件寄存器
2)一个中断服务子程序中会访问到的非自动变量(Non-automatic variables)
3)多线程应用中被几个任务共享的变量