函數(shù)聲明后面的const用法 const char *和char *const的區(qū)別

前言

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

1 const 和指針變量

C和C++中結(jié)果相同

2 const 函數(shù)返回值

c和C++中表現(xiàn)相同

const在函數(shù)中.png

3 const在形參中

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


const形參.png

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

const在函數(shù)后.png

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

const類只能調(diào)用const函數(shù).png

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表示指針

參考:

函數(shù)聲明后面const用法

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容