关于C语言中变量的探讨

来源 :考试周刊 | 被引量 : 0次 | 上传用户:kl7aa
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘 要: 在所有的计算机高级语言中,都存在着变量这样一个重要的概念。变量是计算机高级语言程序的重要成分之一。与其他语言中的变量相比,C语言中的变量所包含的内容更为丰富,包括变量的定义、数据类型、变量数据类型的转换、作用域、存储类别和存储方式等。
  关键词: C语言 变量 变量的存储类别
  
  C语言是一种应用广泛的、结构化的程序设计语言。程序设计的一项主要任务就是对数据进行处理,编写程序时需要用到各种变量来存放数据。因此,变量在C语言中是一个很重要的概念。由于C语言的数据结构丰富,变量的内容也很多,包括变量的概念、定义、数据类型、作用域、存储类别和存储方式等。灵活掌握C语言中的各种变量,对程序设计将起到至关重要的作用。
  一、变量的概念
  变量是内存或寄存器中用一个标识符命名的存储单元,可以用来存储一个特定类型的数据,并且数据的值在程序运行过程中可以进行修改。可见,变量首先是一个标识符或者名称,就像一个客房的编号一样,有了这个编号,我们就可以找到房间的客人。为了方便,我们在给变量命名时,最好能符合大多数人的习惯,应见名知义,便于交流和维护。
  二、变量的定义和初始化
  在C语言中要使用变量必须先定义,再使用。一个变量定义的完整格式是(里的部分表示可以省略的部分):
  [存储类型]数据类型 变量名1[=表达式1],变量名2[=表达式2],……,变量名n[=表达式n]。
  定义一个变量的过程就是向内存申请一个符合该数据类型的内存空间,以后对该变量的操作就是对对应内存空间的存取操作。
  在这个定义中,存储类型决定了变量存放在何处,数据类型决定了这个变量所占的字节数,变量名决定了这个变量在本程序中的名字,表达式则决定了这个变量的初始值,使用变量之前应该给一个值,编译程序将帮助我们发现那些还没有被给定一个值就被使用的变量。不过,变量不一定需要初始化。在函数外部定义的变量或者在函数内部用static关键字定义的变量在没有明确地被初始化之前都已被系统初始化为0了。在函数内部或程序块内部定义的不带Static关键字的变量都是自动变量,如果没有明确地对这些变量进行初始化,它们就是会具有未定义值。如果没有对一个自动变量进行初始化,在使用它之前就必须保证先给它赋值。
  三、变量的数据类型
  程序设计最基本的问题是解决对所要处理数据的描述。任何一个数据,都有一个确定的表示形式。一个确定的值和确定的能参与的各种运算,就是数据类型。程序中变量的本质表现在存在时间和占用空间这两个方面。变量的数据类型决定了变量占用的存储空间。它受类型说明语句的制约。任一变量都必须具有确定的数据类型。不管变量怎样变化,其值都必须符合该类数据类型的规定。
  四、变量的存储类型
  C语言中变量不仅仅有数据类型,还有存储类型。数据类型用来说明变量所占的存储空间的大小和可以进行的操作,存储类型用来表示变量的生命期和作用域,即变量起作用的范围。在C语言中,按照变量的作用域把变量分为两种:局部变量和全局变量。
  1.局部变量
  在一个函数内部定义的变量,只在本函数内部有效,这种变量称为“局部变量”。例如:主函数与被调用函数中可以有相同的变量名,但这些变量只作用在它自己的范围内,即两个函数中的同名变量,在内存中占有不同的存储单元,是两个不同的变量。局部变量存在于以下几种形式中:
  (1)在一个函数内部定义的变量是局部变量,只能在函数内部使用。
  (2)在主函数内部定义的变量也是局部变量,其它函数也不能使用主函數中的变量。
  (3)形式参数是局部变量。
  (4)在复合语句中定义的变量是局部于复合语句的变量,只能在复合语句中使用。
  (5)局部变量在函数被调用的过程中占有存储单元。
  (6)不同函数中可以使用同名变量。在不同的作用域内,可以对变量重新进行定义。
  2.全局变量
  在函数外部定义的变量是全局变量,其作用域是变量定义位置至整个程序文件结束。使用全局变量,可增加函数间数据联系的渠道。全局变量可以将数据带入到作用域范围内的函数,也可以将数据带回到作用域范围内的其它函数。提前引用外部变量,需对外部变量进行说明,或称声明。局部变量如与外部变量同名,则在局部变量的作用域内,外部变量存在,但不可见,外部变量的作用被屏蔽。全局变量在程序运行过程中均占用存储单元。在编程时,原则上尽量少用全局变量,能用局部变量,不用全局变量,要避免局部变量全局化。
  在C语言中,按照变量在内存中存在的时间(生存期)角度来分,可分为动态存储方式和静态存储方式。
  (1)静态存储变量
  凡是用关键字Static定义的变量全部被称为静态变量。所有的静态变量全部存储在静态存储区,在程序的运行期间一直存在。
  (2)动态存储变量
  动态存储变量是存储在动态存储区的,这种变量只在定义它们的时候才创建,在定义它们的函数返回时系统回收变量所占内存。对这些变量的创建和回收是由系统自动完成的,所以也叫自动变量(用关键字Auto定义)。最典型的例子就是函数中定义的局部变量。
  变量的特性除了数据类型之外,还有存储类别。C语言中变量的存储类别有四种:自动型(Auto)、静态型(Static)、外部型(Extern)、寄存器型(Register)。
  ①自动型(Auto)
  Auto表示自动变量,通常关键字Auto可以省略,自动变量必须定义在函数内部,我们以前所说的变量基本上都是这种类型,函数的形式参数也是这种类型。自动型变量是局部变量,所以作用域是本函数。若是在复合语句中说明的自动变量,其作用域是本复合语句。
  ②静态型(Static)
  在函数内部以Static进行说明的变量。它是局部变量,作用域与自动变量相同。它的存储方式是静态的,当它被说明后就占有存储单元,直到本程序执行结束,所以它的生命期是从被说明开始到程序执行结束。当一个变量被定义为静态型时,如果它没有赋值,系统自动赋0值,而自动变量不赋值,它的值是不确定的。
  ③外部型(Extern)
  在函数外部说明的变量,它是全局变量,所以作用域是从说明开始到程序结束。它的存储方式是静态型,所以它的生存期是从说明开始到整个程序执行结束。外部变量有定义性说明和引用性说明两种形式,定义性说明作用是定义一个外部变量,不需要使用Extern。若外部变量在程序的后面说明,当前不能直接使用,若要使用就必需使用Extern进行引用性说明。
  ④寄存器型(Register)
  Register关键字用于声明寄存器变量,频繁使用的变量声明为Register型可以提高程序效率,也可以交给编译器自行优化(编译器一般把循环控制变量存储类型定为Register),Register类型的变量受处理器寄存器长度的限制,不符合要求的Register变量将会被处理成Auto型内存变量。Register变量在作用时驻留于处理器的寄存器,故其作用域也只限于相应的函数和复合语句,和Auto类似。
  总之,C语言中的变量类型丰富,运用灵活。只有多想、多练、多编写程序,我们才能真正掌握其中的含义。
  
  参考文献:
  [1]谭浩强.C程序设计.北京:清华大学出版社,2002.8.
  [2]王煜等.C语言程序设计.中国铁道出版社,2005.2.
其他文献
摘 要: 为深化新课改理念,推动学校体育教育向纵深发展,本文作者一方面对现在农村初中体育教学的不足与学校硬件等展开剖析,另一方面对开展体育社团的益处与具体实施办法进行阐述,分析农村初中开展体育社团的可行性及必要性。  关键词: 农村初中 体育社团 存在问题 实施方法    一、现有课外体育活动的不足之处  1.体育教师自身综合素质存在差异,不可能精通各个项目的教育。  2.学生参差不齐,学生的身体
进入新世纪以后,我国基础教育领域里的课程改革正在有声有色地全面展开。十年来,在各级党委和政府的正确领导下,各级教育部门锐意改革、开拓进取,广大中小学勇于探索、大胆实践,课程改革取得了显著的成效。学校、学生和教师在这一过程中都发生了深刻的变化,得到了社会的认可。课程改革正确引导了学生主动参与课堂教学,激发了学生探索知识的欲望,给学生创造性的学习提供了可能,改变了旧的教学模式下出现的一部分学生“吃不饱
摘 要: 在贯彻实施《全国普通高等学校体育课程指导纲要》过程中,有些教师由于没能准确把握其内涵与特征,在认识上出现了偏差,导致在新课程教学中有淡化和忽视运动技能教学的倾向,阻碍了新课程目标的实现。因此纠正认识偏差,正确对待运动技能教学乃当务之急。  关键词: 体育新课程 认识 运动技能教学    1.引言  在当今高校体育教学中,有一些现象值得关注。一是对课程纲要的指导思想领会不深,造成主观上只强
摘 要: 本文作者通过体育教学特点的分析,以及对学校体育教学中德育内容的探讨,提出在体育教学中进行体育渗透的途径与方法,旨在为同行在体育教学中开展德育渗透理清思路,提供借鉴。   关键词: 体育教学 德育 教学渗透 健康成长     在小学体育中对学生进行思想品德教育是毫无疑问的,德育与体育是学校教育的两个重要组成部分,是相辅相成、协调发展的。在体育教学中,进行思想品德教育,易收到事半功倍的效果。
摘 要: CAM实习是综合性很强的实践性教学环节,旨在加强培养学生数字化设计制造的综合能力。本文介绍了采用项目教学法组织CAM实习的教学实践。基于项目教学法的CAM实习教学,可以充分发掘学生的创造潜能,促使学生努力实践,有效地提高学生解决实际问题的综合能力。  关键词: CAM实习 数控编程 实践环节 项目教学法    CAD/CAM技术是21世纪机械制造业的先进技术。使用三维CAD/CAM软件,
粘高梁是新品种,取代糜子,粘玉米和粘谷子、产量高于上述三品种,亩产350公斤以上,收入可观。 一、选茬整地。选用玉米、大豆和小麦茬。播种前,把玉米茬刨掉,拣净,大豆把茬拔
摘 要: 计算机实验室是高校信息类专业学生重要实践基地,它不仅为学生消化理论知识提供一个重要的平台,而且是学生掌握专业应用能力的重要之地。本文作者根据自身的经验总结,从改革实验教学内容和教学手段、实验室开放和实验教学监控等方面来探讨该课题,并给出了自己的见解。  关键词: 计算机实验室 高校实验教学 科学管理    1.引言  实验教学在高校计算机教育中占有极其重要的地位,是教育教学的重要组成部分
摘 要: 针对传统计算机语言教学存在的讲授枯燥、学生接受枯燥等问题,在分析哈佛案例教学之后,本文作者提出结合任务驱动,运用SMART原则,大胆将WinForm教学提前,在计算机高级语言的基础教学和进阶教学中取得了很好的成绩。  关键词: 计算机高级语言 哈佛案例教学 任务驱动 SMART原则    1.传统语言教学中存在的弊端  传统的计算机高级语言(本文以C#为例)教学,以控制台为开始,讲Hel
掖单2号是内地玉米生产的重要品种,种植范围广、面积大,总结、探讨提高技单2号玉米制种产量技术,具有现实的重要意义。新疆具有玉米种子繁殖的优越条件,目前,内地许多种子公司把玉
现代社会对小学生的教育提出了新的要求,对小学生的身体与精神、知识与能力、道德与行为都有了不同于以往的新的教育手段和方法。适应社会的发展,培养现代社会所需 Modern s