分类: C/C++
2010-03-17 00:21:32
一、const修饰符
Const修饰符在C语言中是一个比较新的描述符,意即其所修饰的对象为常量。
说明:
1、必须初始化
const int i=5; //合法
const int j; //非法,导致编译错误
{const int j;j=5;} //非法
2、可以通过函数进行初始化
int value();
const int i=value();
3、限定符声明变量只能被读,即其值不可以修改
const int i=5;
int j=0;
i=j; //非法,导致编译错误
J=i; //合法
4、可以在另一个连接文件中引用const常量
extern const int i; //合法
extern const int j=10; //非法,常量不可以被再次赋值
5、数值常量和指针常量
const int p1 //p1是常量,p1的值不能被修改
const int *p2 //指针p2所指的内容是常量,不能被修改,当p的指向可以被修改。
Const int * const p3 //指针p3是常量,所指内容也是常量
二、Static修饰符
1、用static声明局部变量
该变量为静态局部变量,即该局部变量的值在函数调用结束后不消失而保留原值,即其占用的存储单元不释放,在下一次该函数用时,该变量已有值,就是上一次函数调用结束时的值.
程序例子:
int fac(int n) { static int f=1; f=f*n; return(f); } int main(int argc,char **argv) { int i; for(i=1;i<5;i++) { Printf("%d!\n",i,fac(i)); } } |
运行结果:
1!=1 2!=2 3!=6 4!=24 5!=120 |
2、用static声明外部变量
该变量为静态外部变量,该变量只限于被本文件引用,而不能被其他文件引用。
三、valatie修饰符
volatile修饰符号告诉编译程序不要对该变量所参与的操作进行某些优化。
一般来说,volatile用在如下的几个地方:
1)中断服务程序中修改的供其它程序检测的变量需要加volatile;
2)多任务环境下各任务间贡享的标志应该加volatile;
3)存储器映射的硬件寄存器通常也要加volatile说明,因为每次都它的读写都可能有不同意义;
程序例子:
time_t time_addition(volatile const struct timer *t,int a) { int n; int x=0; volatile time_t then; then=t->value; for(n=0;n<1000;n++) { x=x+a; } return t->value-then; } |