64,631
社区成员
发帖
与我相关
我的任务
分享
(1)符号表本身是存在哪里的?是数据段里吧?
(2)我要强行取这个变量的地址的时候,比如:
const int *pi = &i;
const int * pj = &j;
这时i和j应该都会被分配内存吧?
那么i分配的内存是在数据段,J被分配的内存是在栈中,这对吗?
(3)我就知道c语言的const常量是要分配内存的。如果在c语言中同样有上面这么一段程序,那么i,j分别在哪里分配内存?
(4)c语言有“常量折叠”这样的优化吗?
(5)如果有,进行常量折叠优化时,这个const常量的值是放在寄存器中,每次都从寄存器中取其值?
还是跟c++一样,将其放在符号表中,编译器在编译时进行“替换”优化?
#include <iostream >
using namespace std;
int main(void)
{
const int a=10;
int * p = (int*)&a;//为了能尝试通过*p修改常量a的值,用了强制转换
cout < <"a = " < < a < <endl; //输出 a = 10
cout < <"*p= " < <*p < <endl; //输出 *p = 10
*p=100; //试图修改a的值
cout < <"a = " < < a < <endl; //仍然输出: a = 10
cout < <"*p= " < <*p < <endl; //这里却输出: *p = 100
system("pause");
}