1. const修饰一般变量
const关键字修饰的变量成为常量。常量需要初始化,且不可赋值。
宏定义和const常量的区别
宏定义发生在预处理阶段,只进行简单的字符串替换,不占用内存空间,不进行检查,发生错误时在编译阶段才会发现。
const常量发生在编译阶段,常量具有数据类型,占用内存空间,便于编译器进行检查。
2. const修饰指针
常量指针(pointer to const)
const int *p; //const 修饰 *p
*p = value; //报错 --- 不能改变指针所指变量的值
p = &value; //可以改变指针本身的值
指针常量(const pointer)
int* const p; //const 修饰 p
*p = value; //可以改变指针所指变量的值
p = &value; //报错 --- 不可以改变指针本身的值
双const
const int* const p; //第一个const 修饰 *p, 第二个const修饰p
*p = value; //报错 --- 不可以改变指针所指变量的值
p = &value; //报错 --- 不可以改变指针本身的值