C语言难点专题——const
来源:互联网 发布:阿里云logo含义 编辑:程序博客网 时间:2024/04/27 22:56
1. const对值类型的数据修饰: 如基本类型(int, double, char), struct, array
- 值类型的数据,const放置在前面和后面都一样。
- 对于struct和 Array类型的数据, 跟java的类对象不同,由于java都是对象的引用,所以只要求引用不乱指就行, 而c中,直接要求这个对象的内部成员都不可改变,即struct的任何成员,不可改变,array的任意一项不可改变。这就意味着:
const struct abc a;
a.score = 10; //不容许再次赋值
2. const对地址类型数据的限制, char*, char**等
- const和 * 的相对位置,决定了const 到底是修饰指针不可变还是内容不可变
- const放在* 之后,表示指针不可变, const 放在* 之前,表示内容不可变。 我们可以这样理解,*P表示内容, 所以前面如果加const,当然是指内容不可变。 而仅仅一个P表示的是指针,前面如果用const修饰,当然实说,这个指针不变了。
- 当指针类型的数据相互复制的时候,即右边的参数,交给左边的参数掌控。因此,左边的参数不能越权。
const char* pChar = "agc";
char* pp = pChar; //这里权限信息丢失了,导致pp可以任意操作,有些编译器直接报错,有些要到运行才抛出异常
经常让人迷惑的一个问题:
扩展一下,下面有错吗?
char* const pChar = "agc";
char* pp = pChar;
答案是无错。 提示: pChar不能乱指,当赋值后,放置同一个东西, pChar是否为const,并没有因此改变。
- 左边的指针,可以在右边的基础上添加新的修饰,比如原来指针const,新指针可以是const的指针和const的内容。
- C语言难点专题——const
- C语言难点专题——static
- C语言难点专题——数组和指针
- C语言难点专题——enum, struct 和 Union
- C语言难点专题——函数指针
- C语言难点专题——预定义
- C语言难点专题——复杂的函数声明
- c语言 Const专题
- [C]C语言基础巩固专题----const
- C提高——const专题
- 【C语言提高22】const专题
- C语言难点笔记
- c语言难点
- c语言难点分析
- C语言难点剖析
- C语言的难点
- C语言难点总结
- C语言一些难点
- TIbco的SOA
- C# Funciton_Method Note I
- C# control_base Note I
- Win 下常用的oracle 9i服务的介绍
- 挑战百度 突破验证码限制
- C语言难点专题——const
- 架构师的沟通方式
- 歌
- 测试经理的故事
- 前三十年看父敬子,后三十年看子敬父
- 关于Windows目录下的"$hf_mig$"文件夹
- C/C++位域之我见
- making mdi child forms MODAL
- 使用AT命令进行短信收发、电话本查询