首页 新闻 会员 周边 捐助

c++const 常量放在哪里

0
悬赏园豆:20 [已解决问题] 解决于 2015-09-13 21:04

#include<iostream>

int main()

{

    const int a = 10;

    int *p = NULL;

    p = (int *)&a;

    *p =11;

    printf("a=%d",a);

    return 0;

}

在C语言里面 可以通过 指针来间接修改a得值 在C++里面 却不行

在C++里面 这个常量放在 什么位置 为什么不能通过地址不能修改a的值

c++
涛洛伊的主页 涛洛伊 | 初学一级 | 园豆:79
提问于:2015-09-11 21:58
< >
分享
最佳答案
0

你好,你的代码我测试了。你说的情况确实存在。就我的理解,C++比C更加严格,const所修饰的变量是不允许修改的。

const int x; /* uninitialized const compiles in C but fails in C++*/

就上面一句代码,在C中是可以通过的,但是在C++中是不可以的。

在C++里面,你可以使用一个指针指向一个常量,但是不能修改常量的值。

收获园豆:20
[0] | 小虾三级 |园豆:1257 | 2015-09-12 12:14
其他回答(2)
0

const不是不可修改么

夜空下的男子 | 园豆:31 (初学一级) | 2015-09-12 11:00
0

问了 一个大神 他说 C++里面const 常量是放在符号表里面的。你用指针改的话编译器会为这个常量分配一次地址 你改这个地址的内容 跟常量没有关系,然后我问他符号表在内存的什么位置? 他说符号表 是编译器处理的,他没做过编译器,所以他不知道放在什么地方。 over

涛洛伊 | 园豆:79 (初学一级) | 2015-09-13 21:03
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册