网站大量收购闲置独家精品文档,联系QQ:2885784924

C语言中变量的存储类别.doc

  1. 1、本文档共2页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
一.C语言中,从变量的作用域角度来分,可以分为全局变量和局部变量。 二.变量值存在的时间角度来分,可以分为静态存储方式和动态存储方式。所谓静态存储方式是指在程序运行期间有系统分配固定的存储空间的方式。而动态存储方式则是在程序运行期间根据需要进行动态的分配存储空间的方式。具体包含4种:自动的(auto),静态的(static),寄存器的(register),外部的(extern)。 1. 自动的(auto) 在调用函数时系统会给他们分配存储空间,在函数调用结束时就自动释放这些存储空间,这类局部变量称为自动变量。 2. 静态的(static) 为了满足局部变量的值在函数调用结束后不消失而且保留原值,既占用的存储单元不释放,就出现了静态的局部变量,用static来声明的局部变量。局部变量的特点: (1)相对自动变量(即动态局部变量),在程序的运行期间都占用静态存储区,直到程序结束才释放该存储区。 (2)静态局部变量只是在程序编译时赋初值,以后每次调用时不再重新赋初值,而只是保留上次函数调用结束时的值。动态局部变量编译时不赋初值,直到程序调用时才给变量赋值,每次调用都要赋初值。 (3)在定义局部变量时不赋初值的话,则对静态局部变量来说,编译时会自动赋初值0或空字符。而对动态局部变量,不赋初值则它的值是一个不确定的值,因为动态变量每次都要自动分配存储空间,存储空间的值是不固定的。 (4)静态局部变量在函数调用结束后不释放,但其他函数是不能调用的。 3.寄存器的(register) 为了提高程序的执行效率,对一些运算频繁的变量定义为寄存器变量可以节省每次程序执行时的内存读取,大大节省了时间,提高了效率。寄存器的一些特点: 寄存器变量的特点程序运行时分配寄存器存储空间,结束时释放。这个特点限定了只能把局部自动变量和形式参数定义为寄存器变量。 局部静态变量不能定义为寄存器变量。 4. 外部的(extern) 外部变量是在函数的外部定义的全局变量,他的作用是从变量的定义初开始,到本程序文件的末尾。编译时将外部变量分配在静态存储区。 在程序设计中常用到用extern声明外部变量,用来扩展外部变量的作用域。 常用到得方式有: (1).在一个文件内声明外部变量 定义外部变量,作用域仅限制在从定义处到函数的结束,可以扩展作用范围,用extern声明定义的外部变量。 (2).再多文件的程序中声明外部变量 在程序设计中,可能包含不止一个文件,当两个或者两个以上的文件想共享一个外部变量时,可以在一个文件中定义这个外部变量,在其他文件中用extern声明这个变量,可以完成共享功能。 在程序中经常看到用static声明的外部变量,这种加上static声明的外部变量,只能用于本文件的外部变量。可以避免在不同文件中定义同一个标识符的外部变量出现错误,影响程序。 函数本质上是全局的,但在多文件程序中,可能不同文件包含相同函数标识符的函数,为了避免编译时出错,可以把函数定义为内部函数,尽在本文件中调用,static int fun(void)。 全局函数可以用extern定义,可以省略extern,默认为外部函数,其他文件要调用此函数,只要extern声明一下,既可以调用。

文档评论(0)

ktj823 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档