关于 常量和指针的有关问题? 各种大神
发布时间: 2013-08-09 15:16:24 作者: rapoo
关于 常量和指针的问题? 各种大神请进
const int a = 1;
int *p = &a;
*p = 10000;
printf("%d\n",a);
resualt : a =10000
a 的值为什么可以改变了?
a在常量区的啊。
C语言里面的const 难道只有一半的作用?难道只是一种提示?
求详细解答,越详细越好。
1、另外再求一些关于 字符串 数组 指针 这3个东西相比较的一些资料,越详细越好,
2、还有malloc 内存分配 更加深入的更加详细的一些资料。
《C和指针》这本书上1、这方面的内容我看的不是特别清楚。
先谢谢了。 指针 C 内存分配 malloc
[解决办法]
首先你说的const修该的变量a是常量就错误。这就直接导致你认为后面全是错的。Const并不会修改变量的存储位置,a定义的空间仍然是可读写,因为它的存储空间不在常量区。const它的功能仅仅是告诉编译器变量a不能当左值,如果在后面碰到a为左值的话,报错。但是并不妨碍我们用变量p指向a的空间修改a的值。Const仅仅是在C语言层面模拟的假常量,只要用指针变量就能突破这种假象。
[解决办法]
其实没必要纠结这种问题的,如果你是一个程序员的话,你也不可能写出这样的代码的!
const 变量是可读的,但是你把强转(int *) 说不定就让成为可读的了
编译器到底是怎么处理的,我们也不清楚,只能根据常规情况!