常量折叠问题

来源:互联网 发布:手机听歌软件 编辑:程序博客网 时间:2024/05/18 02:47

常量折叠说的是,在编译阶段,对该变量进行值替换,同时,该常量拥有自己的内存空间,并非像宏定义一样不分配空间。

#include <stdio.h>int main(void) {    const int con = 5;    printf("%d\n",con);    int *ptr;    ptr = const_cast<int *> (&con);    *ptr =67;    printf("%d\n",con);    printf("%d\n",(int)(&con));    printf("%d\n",(int)ptr);    printf("%d\n",*(&con));    printf("%d\n",*ptr);    return 0;}

Output:
5
5
-3441912
-3441912
5
67

在线编译结果
注:因为编译器在优化的过程中,会把碰见的const全部以内容替换掉(跟宏似的: #define pi 3.1415,用到pi时就用3.1415代替),这个出现在预编译阶段;但是在运行阶段,它的内存里存的东西确实改变了!!!

0 0
原创粉丝点击