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