版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、华中科技大学信息学院,C,语言程序设计,4.1,概述,C,语言中的变量具有两种属性,根据变量所持有数据的性质不同而分为各种,数据类型,根据变量的存储方式不同而分为各种,存储类型,变量的数据类型决定了该变量所占内存单元的大小,及形式;变量的存储类型规定了该变量所在的存储区,域,因而规定了该变量作用时间的长短,即寿命的长短,这种性质又称为,存在性,变量在程序中说明的位置决定了该变量的作用域,即在什么范围内可以引用该变量,可引用,又称为,可,见,所以这种性质又称为,可见性,华中科技大学信息学院,C,语言程序设计,几个概念,1,作用域,是该变量在其上有定义的程序,部分,2,变量的生存期,变量从定义开始
2、到它所,占有的存储空间被系统收回为止的这段,时间,3,变量的可见性的含义,在某个程序区域,可以对变量进行访问,或称存取,操作,则称该变量在该区域为可见的,否则为,不可见的,华中科技大学信息学院,C,语言程序设计,再引入几个概念,1,全局变量和局部变量,在一个函数内部或复合语句内部定义,的变量叫内部变量,又称为,局部变量,在函数外定义的变量称为外部变量,又称,为,全局变量,华中科技大学信息学院,C,语言程序设计,2,动态存储变量和静态存储变量,在程序运行期间,所有的变量均需占有,内存,有的是临时占用内存,有的是整个程,序运行过程中从头到尾占用内存。对于在程,序运行期间根据需要进行临时性动态分配存
3、,储空间的变量称为,动态存储变量,对于在,程,序运行期间永久性占用内存的变量称为,静,态,存储变量,华中科技大学信息学院,C,语言程序设计,一个正在运行的程序,可将其使用内存的情况分,为如下三类,如右图,程序代码区,程序的指令代,码存放在程序代码区,静态存储区,静态存储变量,存放区,包括全局变量,动态存储区,存放局部自动,变量,函数的形参以及函,数调用时的现场保护和返,回地址等,华中科技大学信息学院,C,语言程序设计,变量定义的一般形式为,存储类型,数据类型,变量名表,存储类型包括,auto,自动型,register,寄存器型,extern,外部参照型,static,静态型,华中科技大学信息学
4、院,C,语言程序设计,4.2,自动型变量,auto,1,定义,自动变量用关键字,auto,作存储类型声明,如,1,void main,auto int x, y,auto float z,在主函数内定义了自动型,int,变量,x,y,和自动型,float,变量,z,在定义自动型变量时,auto,可缺省,华中科技大学信息学院,C,语言程序设计,2,if (x!=y,int i,for (i = 0 ; i 10 ; i,int j,在条件判断后的那个复合语句中定义了一个自动型,int,变,量,i,在,for,循环后的那个复合语句中定义了一个自动型,int,变量,j,华中科技大学信息学院,C,语言
5、程序设计,2,作用域及寿命,由于自动型变量只能作内部变量,所以自动变量只,在定义它的函数或复合语句内有效,即,局部可见,变量的作用域是指该程序中可以使用该变量名字的范,围。对于在函数开头声明的自动变量来说,其作用域是,声明该变量的函数。不同函数中声明的具有相同名字的,各个局部变量之间没有任何关系,华中科技大学信息学院,C,语言程序设计,例,4.1,include,void main(,int x=5,auto,缺省,1,牰湩晴尨?搥屜屴砬,if(x0,int x=10,(2,牰湩晴尨?搥屜屴砬,牰湩晴尨?搥屜屮砬火,运行结果,x=5 x=10 x=7,华中科技大学信息学院,C,语言程序设计,例
6、,4.2,下面的例子说明了,自动变量的特性,include,void func(,void func(,auto int a = 0,printf( a of func( ) = %dn,+a,void main(,int a = 10,func(,调用,func(,函数,printf( a of main( ) = %dn,+a,func(,调用,func(,函数,func(,调用,func(,函数,该程序的输出结果为,a of func( )=1,a of main( )=11,a of func( )=1,a of func( )=1,华中科技大学信息学院,C,语言程序设计,例,4.3,
7、下面的程序说明自动变量的初始化和,作用域,程序如下,include,int n,void show(,void show(,auto int i=3,n,i,printf(input the value: n=%d i=%dn, n, i,auto int i=10,i,printf( ow the value i=%d n,i,printf(hen the value i=%dn,i,void main(,auto int i,auto int n=1,printf(at first n=%dn,n,for(i=1 ; i3 ; i,show(,printf(at last n=%d,n,程
8、序运行结果,at first n=1,input the value: n=1 i=4,now the value i=11,then the value i=4,input the value: n=2 i=4,now the value i=11,then the value i=4,at last n=1,华中科技大学信息学院,C,语言程序设计,4.3,寄存器型变量,register,1,定义,在函数内或复合语句内定义,例如,void main(,register int i,for (i=0 ;i=100 ;i,寄存器型变量存储在,CPU,的通用寄存器中,因为数据在寄存器中操作比在,内
9、存中快得多,因此通常把程序中使用频率最高的少数几个变量定义为,register,型,目的是提高运行速度,从而节省了大量的时间,大大加快了程序,的运行速度,华中科技大学信息学院,C,语言程序设计,2,分配寄存器的条件是,有空闲的寄存器,变量所表示的数据的长度不超过寄存器,的位长,3,作用域和寿命同,auto,类型,也是在定义,它的函数或复合语句内有效,即,局部可,见,华中科技大学信息学院,C,语言程序设计,例,4.4,用寄存器变量提高程序执行速度,include,函数的形参也可以指定为寄存器变量,一,个函数一般以拥有,2,个寄存器变量为宜,define T 10000,void delay1(,void delay2(,void delay1(,register unsigned i=0,for ( ; iT ; i,void delay2(,unsigned i,for (i=1 ; iT ; i,void main(,unsigned int i,printf(a,调用,delay1(,第一次延时,n,for ( i=0 ; i60000 ; i,delay1(,printf
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 文件和资料的控制措施
- 2019-2020学年高中数学第2章解析几何初步2-1-5平面直角坐标系中的距离公式课件北师大版必修2
- 二零二五年环保项目违约责任承担合同规定3篇
- 高考专题复习探究走向全球化中的国际关系历程课件教学讲义
- 2024年浙江建设职业技术学院高职单招职业适应性测试历年参考题库含答案解析
- 二零二五年机器人技术授权及合作开发合同3篇
- 2024年陇西县中医院高层次卫技人才招聘笔试历年参考题库频考点附带答案
- 2024年阜阳市第三人民医院高层次卫技人才招聘笔试历年参考题库频考点附带答案
- 二零二五年度股份合作企业四股东合作协议3篇
- 2024年沈阳航空职业技术学院高职单招数学历年参考题库含答案解析
- 深孔钻床设备点检表
- 四年级科学《运动与摩擦力》说课课件
- 诉讼费退费确认表
- 全球变暖视野下中国与墨西哥的能源现状分析
- 新外研版八年级上册英语全册教案(教学设计)
- 2022年(高级)茶艺师职业资格考试参考题库-下(多选、判断题部分)
- 边坡安全施工组织方案
- 【讲座】新高考文言文命题特点及备考策略
- 熔炼系统冶金计算相关知识
- 《环境监测》土壤环境质量监测方案设计
- 关于欧盟新版EMC标准EN55032的解析
评论
0/150
提交评论