#define是一个真常量,而const则是有编译器判断实现的常量,是一个假常量,在实际中,使用const定义的变量,最终还是一个变量,只是在编译器内进行了检查,发现有修改则报错。
由于编译器在编译期间对const变量进行检查,因此被const修饰过的变量是可以修改的,利用指针获取到const修饰过的变量地址,强制将指针的const修饰 去掉,就可以修改对应的数据内容。如:
const int nConst = 5;
int *pConst = (int*) &nConst;
*pConst = 6;
int nVar = nConst;