const是一个C语言的关键字,它限定一个变量不容许被改变,知道这个就能读懂这篇博客。ios
要理解他们的用法必定不要从左往右理解,要从指针符号*处分割理解,能够在*左边加个<-符号辅助理解,<-符号无实意。程序员
1.好比const char *p就能够当作const char <- *p,意思是一个指针p指向一个const char常字符类型数据的地址,p是可指向其余地址的,而被指向的值是个不能改变的常量。spa
不少人把char const *p 和 const char *p混淆就是从左往右理解形成的,其实这两句话意思是同样的,只是不一样的程序员有不一样的习惯,意思都是一个指针p指向一个const char常字符类型数据。.net
2.char *const p能够当作char <- *const p,意思是一个常指针p指向char类型数据的地址,既然是常指针,那么p就不可指向其余地址,而被指向的值可改变,由于被指向的是char类型数据,固然是可改变的。指针
3.const char *const p一个常指针指向一个常量。结合上面两点,常指针,不能改变p指向的地址值(即p = &a;又p = &b;),常量,不能改变p指向地址值的值(即p = &a;又 a = 'b';)。没有代码,本身理解,理解了就能够关了,没理解就从新循环再看看上面两点吧。blog