欢迎来到天天文库
浏览记录
ID:50823931
大小:36.45 KB
页数:2页
时间:2020-03-15
《C语言中变量的存储类别.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、一.C语言中,从变量的作用域角度来分,可以分为全局变量和局部变量。二.变量值存在的时间角度来分,可以分为静态存储方式和动态存储方式。所谓静态存储方式是指在程序运行期间有系统分配固定的存储空间的方式。而动态存储方式则是在程序运行期间根据需要进行动态的分配存储空间的方式。具体包含4种:自动的(auto),静态的(static),寄存器的(register),外部的(extern)。1.自动的(auto)在调用函数时系统会给他们分配存储空间,在函数调用结束时就自动释放这些存储空间,这类局部变量称为自动变量。2.
2、静态的(static)为了满足局部变量的值在函数调用结束后不消失而且保留原值,既占用的存储单元不释放,就出现了静态的局部变量,用static来声明的局部变量。局部变量的特点:(1)相对自动变量(即动态局部变量),在程序的运行期间都占用静态存储区,直到程序结束才释放该存储区。(2)静态局部变量只是在程序编译时赋初值,以后每次调用时不再重新赋初值,而只是保留上次函数调用结束时的值。动态局部变量编译时不赋初值,直到程序调用时才给变量赋值,每次调用都要赋初值。(3)在定义局部变量时不赋初值的话,则对静态局部变量来
3、说,编译时会自动赋初值0或空字符。而对动态局部变量,不赋初值则它的值是一个不确定的值,因为动态变量每次都要自动分配存储空间,存储空间的值是不固定的。(4)静态局部变量在函数调用结束后不释放,但其他函数是不能调用的。3.寄存器的(register)为了提高程序的执行效率,对一些运算频繁的变量定义为寄存器变量可以节省每次程序执行时的内存读取,大大节省了时间,提高了效率。寄存器的一些特点:(1)寄存器变量的特点程序运行时分配寄存器存储空间,结束时释放。这个特点限定了只能把局部自动变量和形式参数定义为寄存器变量。
4、(2)局部静态变量不能定义为寄存器变量。4.外部的(extern)外部变量是在函数的外部定义的全局变量,他的作用是从变量的定义初开始,到本程序文件的末尾。编译时将外部变量分配在静态存储区。在程序设计中常用到用extern声明外部变量,用来扩展外部变量的作用域。常用到得方式有:(1).在一个文件内声明外部变量定义外部变量,作用域仅限制在从定义处到函数的结束,可以扩展作用范围,用extern声明定义的外部变量。(2).再多文件的程序中声明外部变量在程序设计中,可能包含不止一个文件,当两个或者两个以上的文件想共
5、享一个外部变量时,可以在一个文件中定义这个外部变量,在其他文件中用extern声明这个变量,可以完成共享功能。在程序中经常看到用static声明的外部变量,这种加上static声明的外部变量,只能用于本文件的外部变量。可以避免在不同文件中定义同一个标识符的外部变量出现错误,影响程序。函数本质上是全局的,但在多文件程序中,可能不同文件包含相同函数标识符的函数,为了避免编译时出错,可以把函数定义为内部函数,尽在本文件中调用,staticintfun(void)。全局函数可以用extern定义,可以省略exte
6、rn,默认为外部函数,其他文件要调用此函数,只要extern声明一下,既可以调用。
此文档下载收益归作者所有