关于 常量和指针的有关问题? 各种大神请进

关于 常量和指针的问题? 各种大神请进
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语言层面模拟的假常量,只要用指针变量就能突破这种假象。
------解决方案--------------------
引用:
Quote: 引用:


  1 #include <stdio.h>
  2 
  3 int main (void )
  4 {
  5 
  6     const int a = 1;
  7     int *p = ( int*) &a;
  8     *p = 10000;
  9     printf(" a   = %d\n",a);
 10     printf(" &a  = %p\n",&a);
 11     printf(" *p  = %d\n",*p);
 12     printf(" p   = %p\n",p);
 13 
 14 }
                             


输入结果:

 a  = 1
 &a  = 0xbf904d38
 *p = 10000
 p  = 0xbf904d38



字符串 数组 指针 看看在这个,自己好好理解下 地址 和指针的关系!
http://blog.****.net/yanludroiyan/article/details/3995276