c++中关于const常量内存分配和强制修改的有关问题
c++中关于const常量内存分配和强制修改的问题
请问
1. 在c++中编译器会对const常量进行优化,把它放到符号表中,不为其分配存储空间,在编译时进行类似于宏定义的操作,在出现const常量的地方在编译时就替换成其对应的值,只有对const常量使用extern关键字或者取地址操作时才对其分配内存。
2.
请问1和2 到底哪种说法是对的? 在2中“double i=Pi;" 这里没有使用extern也没有取地址操作就对const常量pi分配内存了,这是为什么?
------解决思路----------------------
这里没有使用extern也没有取地址操作就对const常量pi分配内存了
这是不对的
请问
1. 在c++中编译器会对const常量进行优化,把它放到符号表中,不为其分配存储空间,在编译时进行类似于宏定义的操作,在出现const常量的地方在编译时就替换成其对应的值,只有对const常量使用extern关键字或者取地址操作时才对其分配内存。
2.
#define PI 3.14159 file://常量宏
const doulbe Pi=3.14159; file://此时并未将Pi放入ROM中
......
double i=Pi; file://此时为Pi分配内存,以后不再分配!
double I=PI; file://编译期间进行宏替换,分配内存
double j=Pi; file://没有内存分配
double J=PI; file://再进行宏替换,又一次分配内存!
请问1和2 到底哪种说法是对的? 在2中“double i=Pi;" 这里没有使用extern也没有取地址操作就对const常量pi分配内存了,这是为什么?
------解决思路----------------------
这里没有使用extern也没有取地址操作就对const常量pi分配内存了
这是不对的