欢迎来到天天文库
浏览记录
ID:48071964
大小:258.81 KB
页数:33页
时间:2019-05-06
《内部变量外部变量.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、6.2内部变量与外部变量C语言中,将变量的有效范围称为变量的作用域。所有的变量都有自己的作用域,变量定义的位置不同,其作用域也不同,作用域是从空间角度对变量特性的一个描述。按照变量的作用域,将C语言中的变量分为内部变量和外部变量。6.2.1内部变量1.内部变量的概念和定义在一个函数(包括main()函数)内部或复合句内部定义的变量称为内部变量,自然,函数的形参属于内部变量。内部变量只在该函数范围内或该复合句范围内有效。也就是说,内部变量的作用域局限于定义它的函数或复合句内部,在此函数之外或此复合句之外
2、就不能使用这些变量了。所以,内部变量也称局部变量。前面我们使用的所有变量都属于内部变量,例如,95页【例6.10】中,void()函数中定义的变量i,其作用域局限于void()函数内,在main()函数中无效;main()函数中定义的变量i也只在main()函数内有效.再如:96页,fun1()函数中定义的变量p1,p2,p3,其作用域局限于fun1()函数内,在main()函数中无效;fun2()函数中定义的变量p4,p5,p6,其作用域局限于fun2()函数内,在main()函数中无效;main(
3、)函数中定义的变量x,y,a,b也只在main()函数内有效.说明:在复合句中也可定义变量,其作用域只在复合句范围内。例如:【例6.5】输入任意三个整数,按从小到大的顺序输出。main(){intnum1,num2,num3;printf("Pleaseinputthreenumbers:");scanf("%d,%d,%d",&num1,&num2,&num3);if(num1>num2){inttemp;temp=num1;num1=num2;num2=temp;}if(num2>num3){in
4、ttemp;temp=num2;num2=num3;num3=temp;}if(num1>num2){inttemp;temp=num1;num1=num2;num2=temp;}printf("Threenumbersaftersorted:%d,%d,%d",num1,num2,num3);}程序运行情况如下:Pleaseinputthreenumbers:8,0,5↙Threenumbersaftersorted:0,5,8本例中的temp变量的作用域局限于复合句内。6.2.2外部变量1.外
5、部变量的概念和定义在函数外部定义的变量称为外部变量。外部变量不属于任何一个函数,其作用域是:从外部变量的定义位置开始,到本源文件结束为止。外部变量可被作用域内的所有函数直接引用,所以外部变量又称全局变量。例如97页例题中a,b存储类别就是外部型说明:(1)在同一源文件中,允许外部变量和内部变量同名。同名时在内部变量的作用域内,外部变量将被屏蔽而不起作用,如下例所示。【例6.6】外部变量与内部变量同名举例。inta=3,b=5;intmax(inta,intb){intc;c=a>b?a:b;retur
6、nc;}main(){inta=8;printf("max=%d",max(a,b));}程序运行结果如下:max=8本例中,main()函数中定义的内部变量a与外部变量同名,max()函数中定义的形参a、b也与外部变量同名。因此,在main()函数中,外部变量a被屏蔽,调用max()函数的实参a是内部变量,值为8,实参b是外部变量,值为5。在max()函数中,外部变量a、b均被屏蔽,形参a、b的值为实参所传递,分别为8和5,所以输出结果为8。从本例可以看出,外部变量与内部变量同名时容易混淆其作用
7、域,因此在程序设计中应尽量避免其同名。(2)外部变量的作用域是从定义点开始到本源文件结束为止的。如果定义点之前的函数需要引用这些外部变量,则需要在函数内对被引用的外部变量进行声明。外部变量声明的一般形式为extern类型名外部变量[,外部变量2…];可通过对外部变量的声明将其作用域延伸到定义它的位置之前的函数中。外部变量的定义和外部变量的声明是两回事。外部变量的定义,必须在所有的函数之外,且只能定义一次。而外部变量的声明,出现在要使用该外部变量的函数内,而且可以出现多次。外部变量在定义时分配内存单元,
8、并可以初始化;外部变量声明时,不能再赋初值,只是表明在该函数内要使用这些外部变量。如97页例题中b,c是外部变量的定义,d,e是外部变量的说明。6.2.4内部函数和外部函数函数在本质上是全局的,因为一个函数需要被其他函数调用。那么,当一个源程序由多个源文件组成时,在一个源文件中定义的函数,能否被其他源文件中的函数调用呢?C语言根据函数能否被其他源文件中的函数调用,将函数分为内部函数和外部函数。6.2.4内部函数1.内部函数的概念和定义如果在一个源文件中定
此文档下载收益归作者所有