c++中const用法的理解
来源:互联网 发布:淘宝天猫国际图标图片 编辑:程序博客网 时间:2024/06/16 17:27
这次主要是在定义变量的时候,欢迎大家指正~
a)
const 和int的顺序规律。似乎只要是const 和int连接在一起的时候,效果都是等价的,即是说const int a=100;等价于int const a=100;(注意的是这里的常量必须初始化!)。同时const int *a=&b;等价于int const *a=&b;不过不知道是不是都满足这个规律,得查查具体编译器的语法规则。
小总结一句:前后顺序都一样,两个连一起意义不变!
b)
比较容易混淆的是const语句中带有指针或者引用。例如const int *p;(据上面的规律等同于int const *p;) p=&ad;(当然事先申明一下ad,不过ad可以是常量也可以是变量),那么我们的“不变性”保持在哪儿呢?关键就在我们不可能通过p去修改ad的值,也就是说ad对于p来说是常量,但是你可以单独对ad修改,也可以单独对p修改,就是不能用p去动ad。(汗...那我们得思考一下什么时候该这么个用法了~感觉是不是在某些扫描数据的场合你不想让数据被误修改的时候这么定义可以呢?即让你的数据对指针绝缘,成为只读的?但是又不影响你自身数据库合法程序对数据的修改,指针又能按顺序移动查看连续的数据~应该是这样的吧~)
一小句总结:数对仅指针来说是常量,两个可以分开变!
c)
相比之下,int * const则不同了,在用的时候必须初始化,即应该与申明一起初始化,这个可是常量指针啊。如果只是int * const h;则会出错,而且测试在vc6的环境下你所指向的变量对象必须是在这个句子之前就声明过的例如int m=123;int * const h=&m;这种用法可以单独改变m的值,但是同上面的一点不一样,即可以通过h改变m的值。例如(*h)++;则改变m为124了。注意一定不能少括号,因为优先级的问题,意义就不同了。那么少了括号的最终问题处在哪呢?是在重新定位h的时候,会警告你要h是个常指针,即它的指向一定不能改变。
总结一小句:前面可以变后面,但是前面自己的值一定不变。
CONST用法第一步总结:变量一定可以单独变不受指针约束(看起来很蠢的结论,不然怎么叫变量呢...)晕。。。
其他的有时间再补上,请大家看看这些有没问题~
- C语言中const的用法和理解
- c++中const用法的理解
- C中const用法
- c语言中const 关键字的理解
- C语言中对const的理解
- 再议C/C++中const的用法
- C语言中const的用法
- C语言中const的用法
- C/C++中const的用法
- C语言中const的用法
- C语言中Const的用法
- C语言中const 的常见用法
- C/C++语言中const的用法
- C语言中const的用法
- C/C++中有关const的用法
- C语言中const的用法
- C/C++中const的用法
- C/C++中const的用法
- 如果你的计算机网络有卡、断、慢的情况,希望您可以耐心看完这个介绍。
- Java Native Method (本地方法)
- PHP创建和使用session cookie变量
- 负载均衡中的LVS
- 适应于Oracle和Sql Server的实体生成工具〔自已写的,用于学习和交流,很好用)
- c++中const用法的理解
- php正则取img标记中任意属性,正则替换去掉或改变图片img标记中的任意属性
- SWT中的tree初始化为展开状态
- 西门子M55,M65的AT指令英文版对照
- log4j.xml 这个文件是如何起作用的
- .NET开发 正则表达式中的 Bug
- IIS7 的新功能 - URL重写、应用程序路由和负载均衡以及PowerShell Cmd-lets
- 中国已有30%的用户安装Silverlight
- CONCATENATE的帮助