声明:不建议修改const变量的值,即使修改也要熟悉当前使用的编译器对该未定义的行为是如何解释的。
在不同的编译环境下,结果也可能是不一样的。
首先,编译器一般不会为const变量分配内存,而是将它保存在符号表中,这样的好处是效率高,开销小。在某些情况也会为const变量分配内存,例如强制声明为extern或取符号常量地址等操作。
const常量在g++和dev c++下,防止编译优化,直接从内存中读取const常量的值。
在vc++和vs下 ,使用const有编译优化。
通过内存(指针)可以修改位于栈区的const变量,语法合乎规定,编译运行不会报错。
通过内存(指针)修改位于静态存储区的const变量,语法上没有错误,编译不会出错,运行时会报异常。