const 修饰符使用方法
来源:互联网 发布:抢单app编程 编辑:程序博客网 时间:2024/05/02 16:43
C/C++中的const修饰符跟指针一起声明时,经常容易搞混淆。而这是几乎所有的面试都会考到的。其实要辨别const到底修饰的是什么,只需要巧妙地分析变量的声明即可。下面是简单的总结。
基本原则:const只限定从const开始向右直到变量名的部分。
也就是说,在分析声明语句时,找到const的位置,然后向右变量名前面的*的个数。假定有n个*,那么const修饰的内容就是 (*...*变量名).
例1. const int *p
从const开始向右数,只有1个*,因此const限定的是(*p)。也就是说(*p)是常量,而p是可变的。由于p是整形指针,因此const限定了(*p)也就是p指向的内容,而没有限定p本身。
例2. int const *p
从const开始向右数,只有1个*,因此语义与例1相同。
例3. int* const p
const右边没有*,因此const直接限定p,也就是指针本身。而指针指向的内容(*p)未限定。
例4. const int * const p
一个const限定指针本身,另一个const限定指针内容。
例5. const int **p
const右边为(**p),因此const限定(**p)。由于p为整数指针的指针,因此const限定有,(**p)只能为常量整数。也就是:
(*p)++合法;
p++合法;
(**p)++非法.
例6. int const **p
同例5.
例7. int * const *p
const限定的是(*p),因此:
(*p)++非法;
p++合法;
(**p)++合法
例8. int * const * const p 两个const分别限定了(*p)和p,因此: (*p)++非法; p++非法; (**p)++合法
例9. const int ** const p
两个const分别限定了(**p)和p,因此:
(*p)++合法;
p++非法;
(**p)++非法
例10. const int * const * p 两个const分别限定了(**p)和(*p),因此: (*p)++非法; p++合法; (**p)++非法
例11. const int * const * const p 三个const分别限定了(**p),(*p)和p,因此: (*p)++非法; p++非法; (**p)++非法
参考http://blog.csdn.net/rangzh/archive/2009/10/13/4666529.aspx
- const 修饰符使用方法
- const限定修饰符
- const修饰符杂谈
- const修饰符
- const修饰符
- const修饰符详解
- const修饰符
- Const限定修饰符
- const修饰符详解
- const修饰符
- 修饰符const
- 关于const修饰符
- const修饰符浅析
- const修饰符总结
- const修饰符
- Const修饰符作用
- const修饰符
- const 修饰符
- 数据库连接池详解
- 阿根廷赢了
- outlook 2007禁止下载某些类型的附件的解决办法
- 中文url编码
- 关于数据事实表汇总的模拟实现——原理
- const 修饰符使用方法
- Java 的 网站
- 有关项目管理的一点实践经验!
- 关于数据事实表汇总的模拟实现——脚本实现
- 网络编程全面接触
- [水晶报表]动态加载图片(签名)
- eclipse项目上有红叉,却找不到哪个文件有错。
- 各种色值及名称
- 做什么样的软件才能赚钱?学什么样的知识才能赚钱?