C语言中变量的作用域和生命周期
来源:互联网 发布:淘宝服装描述 编辑:程序博客网 时间:2024/04/24 19:42
谭浩强书:
从存储模型可以看到,谭浩强和钱能的模型有一定的对应关系:
变量的类型:
register变量:
为了提高效率,C 语言允许将局部变量的值放在 CPU 中的寄存器中,这种变量叫“寄存器变量”,用
关键字 register 作声明。
1) 只有局部自动变量和形式参数可以作为寄存器变量;
2) 一个计算机系统中的寄存器数目有限,不能定义任意多个寄存器变量;
3) 局部静态变量不能定义为寄存器变量
用extern声明外部变量:
外部变量(即全局变量)是在函数的外部定义的,它的作用域为从变量定义处开始,到
本程序文件的末尾。如果外部变量不在文件的开头定义,其有效的作用范围只限于定义处到
文件终了。如果在定义点之前的函数想引用该外部变量,则应该在引用之前用关键字 extern
对该变量作“外部变量声明”。表示该变量是一个已经定义的外部变量。有了此声明,就可
以从“声明”处起,合法地使用该外部变量。
总结:
从作用域来划分分为:
- 自动变量auto,即动态局部变量(离开函数,值消失)
局部变量 - 静态局部变量static(离开函数,值还保留)
- 寄存器局部变量register(离开函数,值消失)
- 形式参数可以定义为自动变量或者register变量
- 静态外部变量(作用域只能在该文件中,文件作用域)
全局变量 - 外部变量(非静态外部变量,全局变量,可以被其它文件使用)
从变量的生存周期来分:
- 自动变量auto
动态存储 - 寄存器变量register
- 形式参数
- 静态局部变量
静态存储 - 静态外部变量
- 外部变量(全局变量)
从变量值存放的位置:
- 静态局部变量
内存中的静态存储区(全局数据区) - 静态外部变量
- 外部变量(全局变量)
- 自动变量auto
内存中的动态存储区(栈) - 形式参数
CPU中的寄存器 - 寄存器变量register
局部静态(static)变量,作用域为局部,而生命周期是全程。 静态局部变量属于静态存储方式,它具有以下特点: (1)静态局部变量在函数内定义,但不象自动变量那样,当调用时就存在,退出函数时就消失。静态局部变量始终存在着,也就是说它的生存期为整个源程序。 (2)静态局部变量的生存期虽然为整个源程序,但是其作用域仍与自动变量相同,即只能在定义该变量的函数内使用该变量。退出该函数后, 尽管该变量还继续存在,但不能使用它。
- C语言中变量的作用域和生命周期
- C语言中变量的作用域和生命周期
- C语言中变量的生命周期和作用域
- C语言变量作用域和生命周期
- C语言 变量的作用域和生命周期
- C语言 变量的作用域和生命周期
- C语言中变量的作用域和生命…
- C语言中变量的作用域、生命周期及存储区域
- 从c语言中常用变量的生命周期,作用域,默认值,内存区域及链接属性
- C语言编程基础-11递归函数变量的生命周期和作用域
- C语言中变量的作用域
- C语言中变量的作用域
- C语言中变量的作用域
- C语言中变量的作用域
- C语言中变量的作用域
- C语言中变量的作用域 .
- C语言中变量的作用域
- C语言中变量的作用域
- python 访问 zookeeper
- Socket 端口和服务
- 名字的漂亮度
- Python -- 使用os.remove删除文件夹时报错
- 一文搞懂HMM(隐马尔可夫模型)
- C语言中变量的作用域和生命周期
- hibernate的基本配置
- ant的体验总结
- RCP中获得其他view或editor引用的方法
- 第五周项目1(4)
- Input脚本
- 第七届河南省赛部分题
- Python::OS 模块
- jquery中未来元素的DOM操作用法-on