1.const修饰指针
(1)const int *p=&x:不可修改*p的内容,但可以让指针p指向另一个地址,和int const *p一样
(2)int *const p=&x:指针本身是个常量,固定指向某一变量,因此p不可变,但是*p可变
2.const修饰函数
(1)函数参数前加const是保护指针,引用传递的值不可修改
(2)类的成员函数后面加const,表面该函数不能修改成员变量,不可调用非const成员函数
3.Volatile
访问寄存器要比访问内存快得多,编译器往往将频繁使用的变量保存在寄存器中,以便保证存取速度,这可能会导致变量脏读。用Volatile修饰的变量每次都会从内存读取,防止脏读
4.Static
(1)隐藏。 当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性,故使用static在不同的文件中定义同名函数和同名变量,而不必担心命名冲突。
(2)static的第二个作用是保持变量内容的持久。存储在静态数据区的变量会在程序刚开始运行时就完成初始化,也是唯一的一次初始化。共有两种变量存储在静态存储区:全局变量和static变量。
(3)static的第三个作用是默认初始化为0.其实全局变量也具备这一属性,因为全局变量也存储在静态数据区。在静态数据区,内存中所有的字节默认值都是0×00,某些时候这一特点可以减少程序员的工作量。
原文地址:http://blog.csdn.net/u011421608/article/details/40211207