const 进行一下详细的分析
来源:互联网 发布:mac 蓝牙 鼠标 编辑:程序博客网 时间:2024/06/05 13:31
最近一直在阅读Linux内核源代码,发现const用处很多,不禁感叹Linux内核代码真是把C语言应用的淋漓尽致!今天就专门对!
const的作用就不说了,地球人都知道!
(一)
直接看代码:
int a=10;
a=9;
以上两句史上最简单的代码肯定编译通过!再看……
const int a 10;
a=9;
再次编译就通不过了吧!因为变量a已经限定为const常量,不能改变a的值!
注意:
在声明一个const变量时可以为他赋初值!
const int a;
a=10;
此时编译再次报错,不能对一个只读变量赋值!此时若输出a的值为一个随机值,因为变量a在栈中!不信你看:
const.c
int main(void)
{
const int a=10;
}
gcc –S const.c
vim const.s
.file "const.c"
.text
.globl main
.type main, @function
main:
leal 4(%esp), %ecx
andl $-16, %esp
pushl -4(%ecx)
pushl %ebp
movl %esp, %ebp
pushl %ecx
subl $16, %esp
movl $10, -8(%ebp)
addl $16, %esp
popl %ecx
popl %ebp
leal -4(%ecx), %esp
ret
.size main, .-main
.ident "GCC: (GNU) 4.1.2 20080704 (Red Hat 4.1.2-48)"
.section .note.GNU-stack,"",@progbits
注意红色字体的两行,at&t的汇编代码不用解释了吧。。。。。。
(二)
const在内核代码中几乎全部用在了指针变量上!让我们继续分析!
1)
int a=10;
const int *p=&a;
*p=9;
编译报错!指针p指向的变量为只读变量!此处同样不能用 a=1 改变a的值!
注意:指针p的值是可以改变的!
例如:
int a=10;
int b=9;
int *p=&a;
p=&b;
编译运行成功!
2)
int a=10;
int b=9;
int * const p=&a;
p=&b;
编译失败!const限置指针变量p为只读变量,所以同样不能改变它的值!
总结一下:
C中 const用法很巧妙,运用const可以很好的保证某些变量被人为的修改!
希望本文对你有所帮助!
- const 进行一下详细的分析
- const详细分析
- wait(),notify(),notifyAll()进行了详细的分析介绍
- 画图理解软件工程-进行详细的需求分析(二)
- const的用法 较详细
- const的用法-很详细
- const的用法分析
- 详细记录一下JAVA应用程序服务出现内存溢出的利用MAT分析过程
- 详细的介绍一下Unity5的AssetBundle
- 分析一下logwrapper的原理
- 详细的介绍一下PHP递归算法
- 进化后的const分析
- 进化后的const分析
- C++中const的详细解释
- C++中const的用法详细总结
- 关于C C++的const详细讲解
- 回忆一下const相关内容
- 简单聊一下const
- mysql忘记root密码的解决方法 .
- 边归并排序,边统计逆序对数
- PHP 5的mysqli扩展
- 彻底搞定C语言指针
- android 动态设置ImageView图片
- const 进行一下详细的分析
- 第八周实验任务三--实现分数类中的运算符重载并可以完成分数的加减乘除、求反、比较的运算
- initWithNibName导致的初始化问题
- MYSQL嵌套游标产生混乱的解决方法及注意地方
- 光流计算方法及编程
- oracle之定时任务[转]
- 楔子
- android-status bar :状态栏通知
- Razor视图引擎之语法剖析1