十分钟深入理解const用法(趣味故事)
文章目錄
- 1、c標(biāo)準(zhǔn)
- 2、const的用法
- 3、修飾變量
- 4、修飾指針
- 🍅const* p
- 🍅*const p
- 5、趣味小故事
- 6、總結(jié)
1、c標(biāo)準(zhǔn)
1、首先我們來(lái)了解一下現(xiàn)在所學(xué)的C標(biāo)準(zhǔn),分別是C89、C99和C++99,C89標(biāo)準(zhǔn)的C語(yǔ)言中的const和C++中的const是有區(qū)別的,而在C99標(biāo)準(zhǔn)的C語(yǔ)言中是相同的。我們目前所學(xué)的C語(yǔ)言標(biāo)準(zhǔn)為C89標(biāo)準(zhǔn)。
2、在C語(yǔ)言(C89)中的const可以不初始化但后續(xù)也就無(wú)法對(duì)其賦值,所以盡管不初始化不會(huì)出錯(cuò)。但要使用const修飾的量就需要對(duì)其進(jìn)行初始化。
2、const的用法
const:為constant的縮寫(xiě),它修飾的量為一個(gè)常量即不能被修改的量。
- 修飾變量
- 修飾指針
3、修飾變量
修飾變量指的是,用const定義的變量不能隨意改變,所以稱(chēng)它為只讀變量
舉個(gè)例子:
int main() {const int n = 10;n = 20;printf("%d\n",n);return 0; }運(yùn)行結(jié)果可見(jiàn)↓
可見(jiàn)const修飾的變量不能隨意改變!
4、修飾指針
🍅const* p
既然const修飾的變量不能隨意改變,我們是不是可以通過(guò)修改n的地址:int * p=&n,*p=20
int main() {const int n = 10;int* p = &n;*p = 20;printf("%d\n",n);return 0; }
const修飾的n不能改,結(jié)果把&n的值修改了!
這種方式是不是在間接破壞const呢?打個(gè)比方
我不允許你從大門(mén)進(jìn)來(lái),結(jié)果你把窗戶(hù)打碎了進(jìn)來(lái)
我們不允許這種無(wú)賴(lài)的行為發(fā)生,所以我們對(duì)*p進(jìn)行修改:const int * p = &n;
int main() {const int n = 10;const int* p = &n;*p = 20;printf("%d\n",n);return 0; }
這時(shí)候說(shuō)明const可以修飾指針
所以當(dāng)const放在*的左邊的時(shí)候(const int* p) == (const * int p)
修飾的是*p;修飾的是指針?biāo)赶虻膶?duì)象不能再被改變了;但p變量中的地址是可以改變的。
🍅*const p
那換個(gè)方式思考,我們把const放在*的右邊呢?
int main() {const int n = 10;const int* const p = &n;*p = 20;p = 20;printf("%d\n",n);return 0; }所以當(dāng)const放在*的右邊的時(shí)候(int * const p)
修飾的是p;表示p的內(nèi)容不能被改變,但是p指向的對(duì)象是可以通過(guò)p來(lái)改變的。
5、趣味小故事
舉一個(gè)戀愛(ài)花錢(qián)小故事來(lái)深入理解一下吧
int *p = &M,說(shuō)明女孩p和李澤言M談戀愛(ài)了;
談戀愛(ài)以后,女孩就對(duì)男孩說(shuō):”你請(qǐng)我吃麥旋風(fēng)吧“
因?yàn)橐槐溞L(fēng)要10元錢(qián),意味著:*p = 0;就相當(dāng)于把男孩的10元錢(qián)花掉了;
此時(shí)這個(gè)男孩比較摳門(mén),不愿意把十塊錢(qián)花掉;
男孩就很聰明,在*號(hào)的左邊加了一個(gè)const:
女孩發(fā)現(xiàn)男孩M連一個(gè)把麥旋風(fēng)都不請(qǐng)他吃,毅然決然的分手,于是通過(guò)*p=&n換了一個(gè)有一百塊錢(qián)的男朋友n(白起)
此時(shí)男孩M慌了,心想:”既然你要換男朋友,那么我們?cè)偌s定一下!“
男孩M對(duì)女孩說(shuō):”我可以請(qǐng)你吃,不過(guò)你不能換男朋友!”
男孩M于是把const移到了*號(hào)的右邊;
此時(shí)p = 0可以執(zhí)行,但是p = &m不能執(zhí)行;
但是如果你遇到了一個(gè)男朋友:const int const p = &n;那么你可以分手了
說(shuō)明這個(gè)男孩既不請(qǐng)吃東西,又不讓你換男朋友!渣男!!
6、總結(jié)
- const int* p:const放在了*的左邊,修飾的是*p,使得*p不能通過(guò)p來(lái)改變,但是p可以被改變;
- int* const p:const放在了*的右邊,修飾的是p,p不能被改變,但是*p可以被改變;
- const int* const p 既不能改變p,也不能改變*p。渣男!!
總結(jié)
以上是生活随笔為你收集整理的十分钟深入理解const用法(趣味故事)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: nodejs使用xlsx和xlsx-st
- 下一篇: SIM卡管脚定义