《我对const修饰符应用的理解》读后感--const关键字的非主
来源:互联网 发布:php商城源码下载 编辑:程序博客网 时间:2024/05/18 06:23
读了李羽同学的《我对const修饰符应用的理解》,觉得还应该有所深入,于是就写了这个笔记。
以下是dave的理解:
const关键字在C语言中的作用仅仅是限定 不可以通过const变量来修改内存数据,但是可以通过别的方式,例如指针指向const变量然后再修改内存中的值。
但对于const关键字的优化gcc和g++的处理还有些不一样(以下对C/C++的描述可缩小范围为gcc/g++的描述)。
例如以下代码:
- #include <stdio.h>
- int main()
- {
- const int a = 100;
- int *p = (int *)&a;
- (*p)=1;
- printf("%d",a);
- return 0;
- }
在gcc下编译运行通过,输出1。
在g++下编译运行通过,输出100。调试过程中发现在printf("%d",a);这句的时候没有从内存中读取a的值,而是直接用100这个字面常量。这就是const关键字优化的结果,如果定义的时候换成volatile const int a = 100; 用volatile关键字限定的话就输出的1。
但是使用O2开关优化的时候,采用gcc/g++ (GCC) 3.4.5 (mingw-vista special)时 ,无论gcc还是g++都是输出100,加了volatile关键字也不起作用了。在gcc/g++ (GCC) 4.3.2 20081105 (Red Hat 4.3.2-7)中只要加入volatile,输出就是1。看来不同版本的编译器,不同的系统还有不一致的情况。所以这个结果提醒我们,不要试图修改const变量值,保不准会出现什么问题。
- 《我对const修饰符应用的理解》读后感--const关键字的非主
- 我对const修饰符应用方法的理解
- 对const关键字的理解
- 对const关键字的理解
- 对const关键字的理解
- 对const关键字的理解
- CONST修饰符的理解
- const 修饰符的认识理解与应用
- const 修饰符的认识理解与应用
- 【转】对const关键字的理解
- c++中对const关键字的理解
- 我对const的一点理解
- 对const的理解
- 对const的理解
- c/c++ 自己对const修饰指针的理解
- const关键字修饰指针的疑惑点
- const关键字的深入理解
- const关键字的深入理解
- 关于Java中add使用小总结
- 不由自主
- Php代码实现将mysql数据库导出为excel表格形式
- 性能测试工具原理
- 学习asp.net比较完整的流程
- 《我对const修饰符应用的理解》读后感--const关键字的非主
- 即将毕业的我
- 进步在无形中
- 选择Java的原因
- 常见死机原因剖析
- BIOS自检响铃含义
- 常见死机原因剖析
- 32位电脑与64位电脑有什么不同?
- 给C++学者推荐一本好书