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