关于指针的有关问题(请高手指教)

关于指针的问题(请高手指教)
char   *p1;
const   char   *p2;
p2   =   p1;(可以)
这样是可以的吧?

但是下面:
char   **p1;
const   char   **p2;
p2   =   p1;(不可以)
却是不可以的.

这是为什么啊?请高手指教一下.
非常感谢!

------解决方案--------------------
p1指向的是char *类型, p2指向的是const char *类型。类型不匹配。。
------解决方案--------------------
又是 <c专家编程>
------解决方案--------------------
回答点子没点到。:)
------解决方案--------------------
char *p1;
const char *p2;
p2 = p1;(可以)
这样是可以的吧?
------------------
这可没问题


char **p1;
const char **p2;
p2 = p1;(不可以)
却是不可以的.
-------------
此处是把p1所指的地址的值的地址给了p2,也就上说p2一下得到两个值,第一个是p1所指的地址的值,第二个是该值的地址。而定义了p2为const型,就是说p2的值是不能改变。而这恰好改变了p2的值。
------解决方案--------------------
楼主的这个问题在一本书里看到过,明确的讲了二级指针和一级指针在遇到const时候的不同,一时又想不起什么名字.