* (指针)和 const(常量) 谁在前先读谁 ;*象征着地址,const象征着内容;谁在前面谁就不允许改变。
常量指针p1:指向的地址可以变,但内容不可以重新赋值,内容的改变只能通过修改地址指向后变换。
p1 = &a是正确的,但 *p1 = a是错误的。
指针常量p2:指向的地址不可以重新赋值,但内容可以改变,必须初始化,地址跟随一生。
p2= &a是错误的,而*p2 = a 是正确的。
指向常量的指针常量:两者皆不可变!
来一个较为复杂的声明:
char * const * (*next)()
这个声明的意思为:next是一个函数指针,他指向的这个函数返回一个(指向char型的常量型的指针);
看的话要分开看 char * const 作为一个整体,*(*next)()作为一个整体。