1,const
const修饰的变量是只读的,它所修饰的变量不能作为左值;
const修饰的局部变量在栈上分配空间
const修饰的全局变量在全局数据区分配空间
const只在编译期有用,在运行期无用
C语言中的const使得变量具有只读属性
现代C编译器中的const将具有全局生命周期,变量存储于只读存储区
const全局变量:只读,值不可改变
const局部变量:加了static,只读,值不可改变,不加static,值可以改变
工程应用:
const修饰函数参数表示在函数体内不希望改变参数的值
const修饰函数返回值表示返回值不可改变,多用于返回值指针的情形
2,volatile
volatile可以理解为编译器警告指示字,告诉编译器每次必须去内存中取变量值,主要修饰可能被多个线程访问的变量,也可以修饰被未知因素更改的变量,在多线程与嵌入式开发中常被使用。
const volatile int i = 0;
变量i具有什么特性?这个i是一个只读变量,且不允许编译器对其进行优化