C语言里的铁布衫——const.doc

上传人:白大夫 文档编号:3250915 上传时间:2019-08-06 格式:DOC 页数:2 大小:14KB
返回 下载 相关 举报
C语言里的铁布衫——const.doc_第1页
第1页 / 共2页
亲,该文档总共2页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《C语言里的铁布衫——const.doc》由会员分享,可在线阅读,更多相关《C语言里的铁布衫——const.doc(2页珍藏版)》请在三一文库上搜索。

1、C语言里的铁布衫const相传在C的世界里出现了一件极品装备(铁布衫)const、它的出现,让天下的所有刺客和黑客都闻风丧胆,在它的保护下,所有的变量都可以保存的完好无损const是constant的缩写,表示海枯石烂、恒定不变、一旦相伴、永不变心。只要一个变量前面用const来修饰,就意味着该变量的数据可以被访问,不能被修改。其实我们还可以叫它readonly.虽然理解起const来相对比较容易理解,但是const不仅仅可以用来修辞基本类型,它还可以经常用来修辞一些构造类型和指针及其参合体,如数组、指针、指针数组、结构体数组、结构体指针数组一旦和这些复杂的类型结合起来还是有一定的迷惑性的.例

2、如:(1) const int a = 10;(2) int const a = 10;(3) const int a10 = 1,2,3, 4, 5, 6, 7, 8, 9, 10;(4) const int *p;(5) int * const p;(6) const struct devices dev5;(7) struct devices const * dev5;看到上面的例子,我相信很多人都会倒吸一口冷气。话不多说直接看辨识技巧将类型去掉;看const修饰谁,谁就拥有铁布衫,谁的值就不能被修改,是readonly(1)去掉类型 int 变成“const a = 10”,a 拥有了

3、铁布衫,a的值是不变的(2)去掉类型 int 变成“const a = 10”,a 拥有了铁布衫,a的值是不变的,这两个的效果一样(3)去掉类型 int 变成“const a10”, a10拥有了铁布衫,a数组里面的值是不变的(4)去掉类型 int 变成“const *p”,*p拥有铁布衫,p所指的空间里面的值是不变的(5) 去掉类型 int * 变成 “const p”,指针变量p拥有了铁布衫,指针变量p的值不变,也就是说p不能再指向其他地址了,但是p所指向的空间的值可变(6)去掉类型struct devices变成“const dev5”,dev5拥有了铁布衫,dev5数组的值不变(7)这

4、是一个devices结构体类型的指针数组,它拥有5个devices结构体类型的指针,每个指针指向一个devices结构体,const修饰*dev5,去掉类型struct devices变成“const *dev5”,指针数组*dev5拥有了铁布衫,指针数组dev中每个元素指向的空间里的值不变。作用总结:首先、const关键字修饰变量名的时候,把这个变量变为是一个只读变量,这里的只读不是全局数据区的or段。它所修饰的变量原来是在哪个区域,const修饰之后它还在那个区域。比如修饰一个局部变量const int num = 5;那么这个局部变量还是存在栈空间上。它本身对应的内存空间还是可以变的。但是不可以通过num去修改它。如果定义一个指针指向num的地址。则可以改变num的值。其次、const可以修饰形参(保护形参不被修改),在这一点上,站在实现者的角度,const可以防止函数对实参修改带来的问题。站在调用者的角度来说,它对于实参只能访问,不能修改。所以、合理地使用关键字const可以使编译器很自然地保护那些不希望被改变的参数,防止其被无意的代码修改。简而言之,这样可以减少bug的出现。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1