C语言关键字 - 铁布衫:const
++++++++++++++++++++++++++++++++++++++++++
《C語(yǔ)言深入理解系列?- 鐵布衫:const》
查看其它博文請(qǐng)關(guān)注原創(chuàng)作者。
本文系本站原創(chuàng),歡迎轉(zhuǎn)載! 轉(zhuǎn)載請(qǐng)注明出處:
http://blog.csdn.net/mr_raptor/article/details/7210704
++++++++++++++++++++++++++++++++++++++++++
?
?鐵布衫:const
描述:相傳C世界中出現(xiàn)了一件極品裝備const,它能的出現(xiàn),讓天下所有的刺客,黑客都失業(yè)了,在它的保護(hù)下,所有的變量都可以完好無(wú)損。
作用:const是constant的簡(jiǎn)寫,表示海枯石欄,恒定不變,一旦相伴,永不“心”變。只要一個(gè)變量前面用const來(lái)修辭,就意味著該變量里的數(shù)據(jù)可以被訪問(wèn),不能被修改。我們其實(shí)還可以給它起個(gè)更雅的名字叫:readonly。
雖然理解起const來(lái)相對(duì)比較容易理解,但是const不僅僅可以用來(lái)修辭基本類型,它還經(jīng)常用來(lái)修辭一些構(gòu)造類型和指針及其參合體:如數(shù)組,指針,指針數(shù)組,結(jié)構(gòu)體數(shù)組,結(jié)構(gòu)體指針數(shù)組等。一旦和這些復(fù)雜類型接合起來(lái),還有一定的迷惑性的。我們一一進(jìn)行分析。
1 const int a = 10;
2 int const a = 10;
3 const int a[10] = {1,2,3,4,5,6,7,8,9,10};
4 const int *p;
5 int * const p;
6 const struct devices dev[5];
7 struct devices const * dev[5];
?
看到上面列出的例子,我相信很多朋友都會(huì)倒吸一口冷氣:想說(shuō)愛(ài)你,不是一件容易的事。不過(guò),我這有兩招辨別使用的技巧:
- 將類型去掉
- 看const修辭誰(shuí),誰(shuí)就擁有了鐵布衫,誰(shuí)的值就是不能修改的,readonly的。
?
1.?????? 去掉類型int變成:const a = 10,a擁有了鐵布衫,a的值不變。
2.?????? 去掉類型int變成:const a = 10,a擁有了鐵布衫,a的值不變,這兩個(gè)效果一樣。
3.?????? 去掉類型int變成:const a[10],a[10] 擁有了鐵布衫,a數(shù)組里的值不變。
4.?????? const修辭*p,去掉類型int變成:const *p,*p 擁有了鐵布衫(下圖中空間2),p所指向的空間里的值不變。
5.?????? const修辭p,去掉類型int*變成:const p,指針變量p擁有了鐵布衫(下圖中空間1),指針變量p里的值不變,也就是說(shuō)p不能再指向其它地址,但是p所指向的空間里的值可變,如圖xxx所示。
圖xxx 指針變量與指針變量所指向的空間示意圖
6.?????? 去掉類型struct devices變成:const dev[5],dev[5] 擁有了鐵布衫,dev[5]數(shù)組里的值不變。
7.?????? 這是一個(gè)devices結(jié)構(gòu)體類型的指針數(shù)組,它擁有5個(gè)devices結(jié)構(gòu)體類型指針,每個(gè)指針指向一個(gè)devices結(jié)構(gòu)體,const修辭*dev[5],去掉類型struct devices變成:const *dev[5],指針數(shù)組*dev[5]擁有了鐵布衫,指針數(shù)組dev中每個(gè)元素指向的空間里的值不變。
++++++++++++++++++++++++++++++++++++++++++
《C語(yǔ)言深入理解系列?- 鐵布衫:const》
查看其它博文請(qǐng)關(guān)注原創(chuàng)作者。
本文系本站原創(chuàng),歡迎轉(zhuǎn)載! 轉(zhuǎn)載請(qǐng)注明出處:
?
http://blog.csdn.net/mr_raptor/article/details/7210704
++++++++++++++++++++++++++++++++++++++++++
?
轉(zhuǎn)載于:https://www.cnblogs.com/mr-raptor/archive/2012/01/19/2347652.html
總結(jié)
以上是生活随笔為你收集整理的C语言关键字 - 铁布衫:const的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 转PHP5+APACHE2.2配置
- 下一篇: 基于visual c++之windows