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的内容。
分享到:
相关推荐
2. C语言难点分析整理 10 3. C语言难点 18 4. C/C++实现冒泡排序算法 32 5. C++中指针和引用的区别 35 6. const char*, char const*, char*const的区别 36 7. C中可变参数函数实现 38 8. C程序内存中组成部分 41 9. ...
2. C语言难点分析整理 10 3. C语言难点 18 4. C/C++实现冒泡排序算法 32 5. C++中指针和引用的区别 35 6. const char*, char const*, char*const的区别 36 7. C中可变参数函数实现 38 8. C程序内存中组成部分 ...
c语言之const用法 c语言之const用法 c语言之const用法 c语言之const用法 c语言之const用法
本文章是关于C语言中const定义常量 。
免费的C 语言中的指针和内存... C语言难点分析整理 10 3. C语言难点 18 4. C/C++实现冒泡排序算法 32 5. C++中指针和引用的区别 35 6. const char*, char const*, char*const的区别 36 7. C中可变参数函数实现 38...
2. C语言难点分析整理 10 3. C语言难点 18 4. C/C++实现冒泡排序算法 32 5. C++中指针和引用的区别 35 6. const char*, char const*, char*const的区别 36 7. C中可变参数函数实现 38 8. C程序内存中组成部分 41 9. ...
const的用法
本文主要介绍了关于C的关键字——const的理解和用法。
本文主要介绍了C语言中const与#define的区别,希望对你的学习有所帮助。
关键字const用来定义常量,如果一个变量被const修饰,那么它的值就不能再被改变,我想一定有人有这样的疑问,C语言中不是有#define吗,干嘛还要用const呢,我想事物的存在一定有它自己的道理,所以说const的存在一定...
总结了const的各种使用方法,及其作用效果,谢谢观看
本文是对C语言CONST如何使用的介绍,感兴趣的朋友可以看看。
文档用大量的例子介绍了const在c 中的详细用法,看了以后会大有收获!
C语言中关键字const、static、volatile、extern、auto、register的用法分析
一个较好的介绍CONST数据处理的函数PPT教程。
个人整理收集的关于关键字const的用法小结
主要介绍了C语言在头文件中定义const变量详解的相关资料,需要的朋友可以参考下
C语言中的const默认是外部链接