关于字符串指针的有关问题

关于字符串指针的问题
char   *a   =   "abc ";
char   *b;
b   =   a;
printf( "%s\n ",b);
a= "def ";
printf( "%s\n ",b);
在执行第三句后,b保存的是不是a的地址空间?
如果是,那么为什么执行第5句a= "def "后,   print   b依然是 "abc "呢?

------解决方案--------------------
在执行第三句后,b保存的是不是a的地址空间?
-------------------------------------------------
执行完第三句之后,b保存是a中保存的地址,换句话说,现在b和a指向相同的内存地址。

而你执行a= "def "之后,仅仅改变了a中保存的地址,即改变了a指向的内存地址,但是b指向的内存地址并没有改变,所以打印b仍然是 "abc "。
------解决方案--------------------
char* a= "abc ";
"abc "是常量,这样的时候a是指向常量的,不能改的,要改的话就char a[]= "abc ";这样才能改。