前言
本文總結(jié)了大部分的const的使用場(chǎng)景。相信好多人也會(huì)被換個(gè)順序換個(gè)結(jié)論給弄蒙了。建議根據(jù)給出的總結(jié)在去記憶會(huì)對(duì)大家有所幫助
1 const 和指針變量

2 const 函數(shù)返回值
c和C++中表現(xiàn)相同

3 const在形參中
const做形參和指針變量規(guī)則相同

4 const在函數(shù)后面(只有在C++的類中)

4 const類只能調(diào)用const函數(shù)(只有在C++的類中)

5 理解
char * const 作為形參只要是告訴使用者,該函數(shù)不會(huì)改變指針的指向,比如我們有一個(gè)add(Node * const head),告訴我們函數(shù)并不會(huì)改變我們傳入的head的地址。
比如 strcpy( char* _Dest, char const* _Source);告訴我們strcpy函數(shù)不會(huì)改變_Source中的內(nèi)容。通過形參的形式可以讓我們更加方便理解函數(shù)。
6 總結(jié)
在1和3兩個(gè)部分有相同的規(guī)則 這里先說3作為形參的意義。
在char const 星 有六種組合分別是
1 char const 星
2 char 星 const
3 const char 星
4 const 星 char
5 星 const char
6 星 char const
我們知道char 一定在 星 的前面那么我們就只有三個(gè)是合法的定義了。
1 char const *
2 char * const
3 const char *
其中 char const * 和 const char * 是相同的。也就是說const 和char他們前后的位置關(guān)系不影響含義。
影響含義是const 在* 前面還是* 在const前面。
char * const c1相當(dāng)于 (char * ) const c1,表示指針是常量,被指向的內(nèi)容是可以改變的。
規(guī)則
1.類型(char)一定在 *(指針)前面表示是什么類型的指針
2.const 和 * 位置決定是指針為const還是內(nèi)容為const
3.char * const 相當(dāng)于(char *) const表示指針

參考: