C语言教程:第五章:函数(9) 英语四级作文·大学英语作文·高考英语作文·高中英语作文·考研英语作文·英语六级作文
入党申请书·入党思想汇报·初中英语作文·中考英语作文·小学英语作文·英语作文指导
网站首页  |  公文写作  |  实用文档  |  思想政治  |  个人简历  |  英语作文  |  演讲稿 | 英语计算机试题
高考试题  |  中考试题  |  职场技巧  |  高中作文  |  初中作文  |  小学作文  |  公务员考试  |  网站地图
 您现在的位置是:首页 > 英语计算机试题 > 计算机等级考试模拟题 > 正文
C语言教程:第五章:函数(9)
收集整理:贝奇范文网网站 如文章涉及版权问题,请与我们联系

二、外部变量外部变量的类型说明符为extern。   

在前面介绍全局变量时已介绍过外部变量。这里再补充说明外部变量的几个特点:   
1. 外部变量和全局变量是对同一类变量的两种不同角度的提法。全局变是是从它的作用域提出的,外部变量从它的存储方式提出的,表示了它的生存期。   

2. 当一个源程序由若干个源文件组成时, 在一个源文件中定义的外部变量在其它的源文件中也有效。例如有一个源程序由源文件F1.C和F2.C组成: F1.C   
int a,b; /*外部变量定义*/   
char c; /*外部变量定义*/   
main()   
{    
……   
}   
F2.C   
extern int a,b; /*外部变量说明*/   
extern char c; /*外部变量说明*/   
func (int x,y)   
{   
……   
}   
在F1.C和F2.C两个文件中都要使用a,b,c三个变量。在F1.C文件中把a,b,c都定义为外部变量。在F2.C文件中用extern把三个变量说明为外部变量,表示这些变量已在其它文件中定义,并把这些变量的类型和变量名,编译系统不再为它们分配内存空间。 对构造类型的外部变量, 如数组等可以在说明时作初始化赋值,若不赋初值,则系统自动定义它们的初值为0。   

三、静态变量   

  静态变量的类型说明符是static。 静态变量当然是属于静态存储方式,但是属于静态存储方式的量不一定就是静态变量, 例如外部变量虽属于静态存储方式,但不一定是静态变量,必须由 static加以定义后才能成为静态外部变量,或称静态全局变量。 对于自动变量,前面已经介绍它属于动态存储方式。 但是也可以用static定义它为静态自动变量,或称静态局部变量,从而成为静态存储方式。   
由此看来, 一个变量可由static进行再说明,并改变其原有的存储方式。   

1. 静态局部变量   
  在局部变量的说明前再加上static说明符就构成静态局部变量。   
例如:   
static int a,b;   
static float array[5]={1,2,3,4,5};   
     
  静态局部变量属于静态存储方式,它具有以下特点:   
(1)静态局部变量在函数内定义,但不象自动变量那样,当调用时就存在,退出函数时就消失。静态局部变量始终存在着,也就是说它的生存期为整个源程序。   

(2)静态局部变量的生存期虽然为整个源程序,但是其作用域仍与自动变量相同,即只能在定义该变量的函数内使用该变量。退出该函数后, 尽管该变量还继续存在,但不能使用它。   

(3)允许对构造类静态局部量赋初值。在数组一章中,介绍数组初始化时已作过说明。若未赋以初值,则由系统自动赋以0值。   

(4)对基本类型的静态局部变量若在说明时未赋以初值,则系统自动赋予0值。而对自动变量不赋初值,则其值是不定的。 根据静态局部变量的特点, 可以看出它是一种生存期为整个源程序的量。虽然离开定义它的函数后不能使用,但如再次调用定义它的函数时,它又可继续使用, 而且保存了前次被调用后留下的值。 因此,当多次调用一个函数且要求在调用之间保留某些变量的值时,可考虑采用静态局部变量。虽然用全局变量也可以达到上述目的,但全局变量有时会造成意外的副作用,因此仍以采用局部静态变量为宜。   
[例5.15]main()   
{   
int i;   
void f(); /*函数说明*/   
for(i=1;i<=5;i++)   
f(); /*函数调用*/   
}   
void f() /*函数定义*/   
{   
auto int j=0;   
++j;   
printf("%d\n",j);   
}   
  程序中定义了函数f,其中的变量j 说明为自动变量并赋予初始值为0。当main中多次调用f时,j均赋初值为0,故每次输出值均为1。现在把j改为静态局部变量,程序如下:   
main()   

本新闻共3页,当前在第1页  1  2  3  

C语言教程:第五章:函数(9)

上一篇:C语言教程:第四章: 数组(1)
 最 新 文 章
收藏本页 | 友情连接 | Copyright @ 贝奇范文网 All Rights Reserved.