c語言裡面const和指標的組合寫法經常令人困擾,想不起它真正表達的意義,而且這也是面試、筆試的時候重要考查的基礎知識。
看下面三種定義:
①const int * p
②int const * p
③int * const p
前兩種定義表達的意思是一樣的:p指標指向的內容不被改變。
最後一種表達的是:p指標的指向不被改變。
是不是有點暈?面試的時候被問起一時想不起來估計葉舌懵逼了。我是這樣理解的:按照有意義的最近取義。
例如①:( const int ) ( * p ),單獨的const是沒有意義的,所以它所以與int結合起來一起解釋,後面乙個就容易解釋得多,表明p是乙個指標變數。兩部分結合起來解釋就是 p是指向了const int的指標,由於指向的內容被定義為const,指標就無權修改內容。
那麼②可以這樣分:( int const) ( * p ),這樣分的話,意義就和①一樣了。因為宣告常量(int const p)和(const int p)一樣。
③:( int ) ( * const p ) 因為(int *) 不能組合,所以它表達的意思是const p---》p不能被改變,*----》p是個指標,int-----》p是int的指標,組合一起就是p指標的指向不被改變。由於指向不被改變,所以才要求宣告時就需要指定它的指向。
上述理解本人的一些理解總結,至於是否真的是這樣,答案在《編譯原理》
C和指標 const指標
一,入門 const 指標 指標指向的內容不能變,指標可以改變指向 指向const的指標 指標不可以改變指向,指標指向內容可以變 include stdio.h int main 二,深度解析 大致說來其可分為三種情況 const修飾指標,const修飾引用,const修飾指標的引用.const修飾...
C 入門 const 指標
一.讓指標指向乙個常量,可以防止通過指標修改所指向的值 方式如下 int a 5 const int p a 此處不能通過 p 6 來修改a的值 但規定的是不能修改p指向的值,但可以通過a來修改自身,則p指向的值也會隨之改變。其次,我們不能修改p指向的值但是可以修改p的值,例如下面的操作時允許的 i...
c 引用 指標 const
1 const定義常量 const int valuename value 2 const與指標 指標常量 int const p 指標的位址不允許修改,值可以修改 常量指標 const int p 值不能修改,位址可以修改 指向常量的指標常量 const int const p 3 const與函...