二级C语言考试辅导教程第五章:函数[9]

二级C语言考试辅导教程第五章:函数[9],第1张

二级C语言考试辅导教程第五章:函数[9],第2张

二。外部变量外部变量的类型说明符是extern。
之前引入全局变量的时候已经引入了外部变量。下面是外部变量的一些附加特性:
1。外部变量和全局变量是从两个不同的角度来指同一类变量。全局变化从其范围提出,外部变量从其存储方式提出,表示其寿命。

2.当一个源程序由几个源文件组成时,在一个源文件中定义的外部变量在其他源文件中也是有效的。例如,有一个由源文件F1组成的源程序。c和F2。丙:F1。C
int a,b;/*外部变量定义*/
char c;/*外部变量定义*/
main()
{

}
F2 . c
extern int a,b;/*外部变量的描述*/
extern char c;/*外部变量的描述*/
func (int x,y)
{

}
三个变量A、B、C都要在F1中使用。c和F2。c文件。在F1中,a、b和c被定义为外部变量。c文件。在F2中。c文件中,有三个变量用extern描述为外部变量,说明这些变量已经在其他文件中定义过了,编译系统将不再为这些变量的类型和变量名分配内存空。构造类型的外部变量,比如数组,可以在解释过程中初始化和赋值。如果没有指定初始值,系统将自动将其初始值定义为0。

三。静态变量

静态变量的类型说明符是静态的。当然,静态变量属于静态存储方式,但属于静态存储方式的量不一定是静态变量。比如,外部变量虽然属于静态存储模式,但不一定是静态变量,必须由static定义,才能成为静态外部变量,或者静态全局变量。至于自动变量,前面已经介绍过,属于动态存储模式。但也可以使用static定义为静态自动变量或静态局部变量,从而成为静态存储模式。来源:www.examda.com
从这个角度来看,变量可以被static重新解释,可以改变它原来的存储方式。

1.静态局部变量
在局部变量描述前添加静态说明符,形成静态局部变量。
例如:
static int a,b;
静态浮点数组[5]={1,2,3,4,5 };

静态局部变量属于静态存储模式,具有以下特点:
(1)静态局部变量是在函数中定义的,但与自动变量不同,它在被调用时存在,在退出函数时消失。局部变量总是存在的,也就是说,它的生存期就是整个源程序。

(2)虽然静态局部变量的生存期是整个源程序,但它的作用域仍然与自动变量相同,即只能在定义它的函数中使用。退出该功能后,虽然变量仍然存在,但无法使用。

(3)允许将初始值赋给结构类的静态局部量。在数组一章中,已经解释了数组的初始化。如果未指定初始值,系统将自动指定一个值0。

(4)如果静态局部变量的基本类型在解释中没有给出初始值,系统将自动给出0值。但是,如果没有给自动变量一个初始值,它的值是不确定的。根据静态局部变量的特点,可以看出它是一个生存期为整个源程序的量。虽然离开定义它的函数后就不能使用了,但是如果再次调用定义它的函数,就可以继续使用,保存上次调用后留下的值。所以,当一个函数被多次调用,并且需要在调用之间保持某些变量的值时,可以考虑静态局部变量。虽然全局变量也可以达到上述目的,但全局变量有时会产生意想不到的副作用,所以最好使用局部静态变量。
[Example 5.15]main()
{
int I;
void f();/* for(I = 1的函数描述*/
;I f();/*函数调用*/
}
void f() /*函数定义*/
{
auto int j = 0;
++ j;
printf("%d\n ",j);
}

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 二级C语言考试辅导教程第五章:函数[9]

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情