- 在C语言中const修饰的变量是只读的,其本质还是变量;
- const修饰的变量会在内存中占用内存;
- 本质上const只对编译器有用,在运行时无用;
- 但是可以通过指针对其修改。
- 在C语言中const修饰的数组是只读的;
- const修饰的数组空间可不被改变。
const int* p; // p可变,p指向的内容不可变
int const* p; // p可变,p指向的内容不可变
int* const p; // p不可变,p指向的内容可变
const int* const p; //p和p指向的内容都不可变
- 当const出现在*号左边时指针指向的数据为常数;
- 当const出现在*号右边事指针本身为常量。
- const修饰函数参数表示在函数体内不希望改变参数的值
- cosnt修饰函数返回值表示返回值不可改变,多用于返回指针的情形。
- volatile可理解为“编译器警告指示字”;
- volatile用于高速编译器必须每次去内存中取变量值;
- volatile主要修饰可能被多个线程访问的变量;
- volatile也可以修饰可能被未知因数改变的变量。