招生考试网
学历类| 阳光高考 美术高考 研究生 自考 成人高考 专升本 中考会考 外语类| 四 六 级 职称英语 商务英语 公共英语 日语能力
资格类| 公 务 员 报 关 员 银行从业 司法考试 导 游 证 教师资格 财会类| 会 计 证 经 济 师 会计职称 注册会计 税 务 师
工程类| 一级建造 二级建造 造 价 师 造 价 员 咨 询 师 监 理 师 医学类| 卫生资格 执业医师 执业药师 执业护士 国际护士
计算机| 等级考试 软件水平 应用能力 其它类| 论文 驾照考试 书法等级 少儿英语 报检员 单证员 教案 专题 考试资讯 文档
 3773考试网 - 计算机等级考试 - 考试辅导 - 计算机二级 - 正文

2014年计算机二级C语言要点3:函数

来源:2exam.com 2013-10-30
2014年计算机二级C语言要点3:函数

7.6 局部变量和全局变量

  1.局部变量

  在一函数内部所定义的变量称为局部变量,局部变量只在本函数范围内有效。

  注意:

  ①不同函数可以使用相同的局部变量名,它们将代表不同的对象,互不干扰;

  ②一个函数的形参也为局部变量;

  ③在函数内部,复合语句也可定义变量,这些变量也为局部变量,只在此复合语句中有效。

  2.全局变量

  在C语言中,程序的编译单位是源程序文件,一个源程序文件中包含一个或多个函数。在函数之外所定义的变量称为外部变量,也称为全局变量。全局变量可以被包含它的源程序文件中的其他函数所共用,作用域为从定义变量的位置开始到源程序文件结束,全局变量可以增加函数之间数据的联系。

  注意:当在同一个源程序文件中,全局变量与局部变量同名时,在局部变量的作用范围内,全局变量不起作用,局部变量起作用。

  7.7 变量的存储类别、作用域及生存期

  1.变量的存储类别

  在C语言中,有两类存储类别:自动类别及静态类别。

  有4个与两种存储类别有关的说明符:auto(自动)、register(寄存器)、static(静态)和extern(外部),这些说明符一般与类型说明一起出现,一般放在类型名的左边,例如:

  auto long I,j;

  也可写成:

  long auto I,j;

  (1)自动变量:自动变量是C程序中使用最多的一种变量,这种变量的建立和撤消都是在系统中自动进行的。

  格式:[auto]数据类型 变量名[=初始化表达式],…;

  上面的说明格式中,方括号中是可省略的部分,auto为自动类别标识符,若省略auto,系统缺省的存储类别也为自动类别。

  注意:函数的形参也为自动类别,在定义时不必加存储类别标识符。

  (2)寄存器变量:寄存器变量与自动变量的性质相同,其区别只在于存储的位置不同,寄存器变量存储在CPU的寄存器中,而自动变量存储在内存中的动态存储区,寄存器变量的存取速度要快些。

  格式:register数据类型,变量名[=初始化表达式],…;

  上面的说明格式中,register为寄存器变量的存储类别标识符。

  说明:

  ①CPU中寄存器的数目是有限的,因此只能把少数的变量说明为寄存器变量;

  ②寄存器变量是存放在寄存器中的,而不是存放于内存中,所以,寄存器变量无地址;

  ③寄存器变量的说明应尽量放在靠近要使用的地方,用完后尽快释放,这样可提高使用效率。

  (3)静态变量:静态类别变量的存储空间在程序的整个运行期间是固定的。

  格式:static数据类型 变量名[=初始化表达式],…;

  在上面的说明格式中,static为静态变量的存储类别标识符。

  静态变量的初始化在编译时进行,定义时可用常量或表达式进行显式初始化。对于没有初始化的静态变量,自动初始化为0(整型)或0.0(实型)。

  注意:静态变量具有可继承性,这与自动变量有所不同。

  (4)外部变量:使用extern可使外部变量使用范围扩充到需要使用它的函数。外部变量可作显式的初始化,若不作初始化,系统将自动地初始化为0或0.0。

  格式:[extern]数据类型,变量名[=初始化表达式],…;

  上面的说明格式中,extern使外部变量的作用范围扩大到其他源程序文件中。

  注意:局部变量既可以说明为自动类别,也可以说明为静态类别;全局变量只能说明为静态类别。

  2.变量的作用域及生存期

  在C语言中,变量必须先说明后使用,在程序中一个已定义的变量的使用范围就是此变量的作用域。经过赋值的变量在程序运行期间能保持其值的时间范围为该变量的生存期。

  (1)局部变量的使用域及生存期

  ①自动变量的使用域及生存期

  自动变量的存储单元被分配在内存的动态存储区,每当进函数体(或复合语句)时,系统自动为自动变量分配存储单元,退出时自动释放这些存储单元。自动变量的作用域为从定义的位置起,到函数体(或复合语句)结束为止。

  自动变量在进入到定义它们的函数体(或复合语句)时生成,在退出所在的函数体(或复合语句)时消失,这就是自动变量的生存期。

  使用自动变量的优点是使各函数之间造成信息分隔,不同函数中使用同名变量时不会相互影响。

  ②寄存器变量的使用域及生存期

  寄存器变量的使用域及生存期与自动变量相同。

  ③静态存储类别的局部变量

  在函数体(或复合语句)内部,用static说明的变量静态存储类别的局部变量,这种变量的作用域与自动(或寄存器)变量的作用域相同,但是生存期有所不同。

  在整个程序运行期间,静态局部变量在内存的静态存储区中占据着永久的存储单元,甚至在退出函数后下次再进入函数时,静态局部变量仍使用原来的存储单元。由于不释放存储单元,所以这些存储单元中的值将会被保留下来。静态局部变量的生存期将一直延长到程序运行结束。

  静态局部变量适合于在函数调用之间必须保留局部变量值的独立变量。

  • 上一个文章:
  • 网站版权与免责声明
    ①由于各方面情况的不断调整与变化,本网所提供的相关信息请以权威部门公布的正式信息为准.
    ②本网转载的文/图等稿件出于非商业性目的,如转载稿涉及版权等问题,请在两周内来电联系.
    最新文章
    推荐文章
  • 此栏目下没有推荐文章

  • 报名考试全国   黑龙江   吉林   辽宁   内蒙古   青海   宁夏   甘肃   新疆   陕西   西藏   北京   天津   河北   山东   江苏   安徽   河南
    上海   浙江   福建   广东   山西   湖南   湖北   江西   广西   海南   云南   贵州   四川   重庆
    分省高校计算机考试黑龙江   吉林   辽宁   内蒙古   河北   北京   天津   新疆   甘肃   宁夏   青海   陕西   山西   河南   山东   江苏   安徽   浙江
    福建   广东   海南   广西   江西   湖北   湖南   四川   上海   重庆   贵州   云南   西藏
    成绩查询
    报考指南
    试题答案
    模拟试题
    考试辅导计算机一级   计算机二级   计算机三级   计算机四级
    经验交流
    高校计算机

    | 关于我们 | 联系我们 | 版权申明 | 网站导航 |
    琼ICP备12003406号