开心过好每天!
2013年(23)
分类: LINUX
2013-08-05 19:07:19
static
在C语言中,关键字static有三个明显的作用:
1)在函数体,一个被声明为static的变量在这一函数被调用过程中维持其值不变。
2) 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。
3) 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用。
const
1)定义const常量
2)const可以修饰函数的参数和返回值,被const修饰的东西都受到保护,可以防止意外的改动,能提高程序的健壮性
eg:
const int a;
int const a;
两个的作用是一样,a是一个常整型数,其值不能被修改
const int *a;
a是一个指向常整型数的指针,也就是,整型数是不可以通过这个指针修改的,但指针可以被修改(等价于int const *a)
int * const a;
a是一个指向整型数的常指针(永远指向某个地址),也就是说,指针指向的整型数是可以修改的,但指针指向的地方是不可修改的
int const * const a;
a是一个指向常整型数的常指针,也就是说,指针指向的整型数是不可以通过指针来修改的,同时指针指向的地方也是不可修改的
1). 关键字const的作用是为给读你代码的人传达非常有用的信息,实际上,声明一个参数为常量是为了告诉了用户这个参数的应用目的。如果你曾花很多时间清理其它人留下的垃圾,你就会很快学会感谢这点多余的信息
2). 通过给优化器一些附加的信息,使用关键字const也许能产生更紧凑的代码。
3). 合理地使用关键字const可以使编译器很自然地保护那些不希望被改变的参数,防止其被无意的代码修改。简而言之,这样可以减少bug的出现。
volatile
优化器在用到这个变量时必须每次重新从内存去读写这个变量的值,而不是使用保存在cache中数据。
下面是volatile变量的几个例子:
1、中断服务程序中修改的供其它程序检测的变量需要加volatile;
2、多任务环境下各任务间共享的标志应该加volatile;
3、存储器映射的硬件寄存器通常也要加volatile说明,因为每次对它的读写都可能由不同意义;
几个问题: