轉載請註明出處: http://blog.csdn.net/elfprincexu函數
1. 常量指針 (const __type__ *)spa
常量指針,一般形式是const位於*左側,C++primer定義爲底層const指針,咱們能夠這樣理解,常量指針覺得「常量的指針」,形容詞爲常量,指針爲名詞。也就是說它的本質仍是一個指針,只不過多了一個「常量的」修飾詞。 表示該指針指向一個常量。.net
咱們經常使用的字符比較函數 strcmp就是一個很好的例子:指針
代表該指針不能修改所指向的常量(理所固然,咱們只須要讀操做,不該該改變所指向的對象的值,設置常量指針保證了在函數內部,不能經過該指針去改變他所指向的對象的值,對保護原對象相當重要,我想之全部常量指針的出現,很大一部分用處在於此番考慮吧。對象
總結: const 的位置在 * 左側 (C++ primer 定義爲底層const*), const 表示常量,該表達式表面常量指針,表面指針指向的對象是常量 !blog
2. 指針常量 (__type__ * const )it
const位於*右側(C++Primer 定義爲頂層const*), 指針常量, 能夠理解爲 「指針的」 類型常量, 本質是 一個常量, 和咱們一般說的整形常量相似, 本質是一個常量。因此常量在定義的時候必須初始化。io
總結: 指針常量,本質是個常量,const位於* 的右側,必須定義時給出初始化(地址),初始化以後不可改變(指針常量,指針固然不能變),可是能夠改變指針所指向的對象的值。變量
3. 指向常量的指針常量 (const __type__ * const)書籍
這個不容易搞錯,反正,兩個都有,兩個性質也都有,必須定義時初始化,而且不能改變指針所指向的對象的值。
const(*號)左邊放,我是常量指針,指向常量,能夠變向;
const(*號)右邊放,我是指針常量,指向變量,不可變向;
const(*號)兩邊放,我是常量指針常量,指向常量,不可變向;