现在的位置: 首页 > 综合 > 正文

第8章 函数(三)全局变量和局部变量的概念

2013年12月09日 ⁄ 综合 ⁄ 共 1885字 ⁄ 字号 评论关闭

 

    声明:文中观点仅代表个人,其中文字、图片未经本人许可,不得部分或全部转载,违者所造成影响后后果自负!联系本人方式:80368704@qq.com QQ:80368704

     我们在前面2节中,实现了3个程序的合并,使1个程序实现了3个功能,实现了我们的最初的想法。那么对于第1节中的程序4,现在,让我们很高兴的运行它,用其求3和2的最大值、最小值和平均值.

     main()在调用max()时,输入3和2,屏幕输出3;

     main()在调用min()时,输入3和2,屏幕输出3;

     main()在调用average()时,输入3和2,屏幕输出2.5;

     结果没有问题,只是有些许遗憾的地方.

     例如:同一个程序,同一组数据3和2,在求解max,min,average时要重复输入3次;

     要是能在开始求解前,输入3和2,分别存在变量a和b中,然后,a和b能让3个函数共用,就简单一些了。要实现上面的想法,我们需要把程序改动2个地方:

     1、要在调用3个函数之前,输入3和2。

       于是我们把3个子函数中的输入语句scanf("%f%f",&a,&b);移动一下,移动到main()函数中,放在

调用3个子函数之前,当然3个子函数中就不要输入语句了。

     2、存放3和2的变量a和b,必须能被max()、min()、average()和main()共用。

       我们把3个子函数中的 float a,b;也移动一下,移到程序的开头部分,

紧跟着#include〈stdio.h 〉.当然三个函数中的float a,b;语句就不要了.

于是程序4变成了如下程序5

程序5:

/********************************************************/

#include〈stdio.h〉

float a,b;/*-------------改动1------------------------------*/

void max()/*求任意2个数字的最大值。*/

{float m;

m=a>b?a:b;

printf("%f/n",m);

}

void min()/*求任意2个数字的最小值。*/

{float m;

m=a<b?a:b;

printf("%f/n",m);

}

void average()/*求任意2个数字的平均值。*/

{float m;

m=(a+b)/2;

printf("%f/n",m);

}

void main()

{

scanf("%f%f",&a,&b);/*--------改动2----------------*/

max();

min();

average();

}

/**********************************************************/

 

       这样程序5就实现了我们的数据3和2,只输入1次的想法。

 

     需要强调说明一下为什么变量定义语句float a,b;要移到函数外?

       我们看到的程序4,max()、min()、average()每一个函数的函数体中都有同样的变量定义

语句float a,b; 各自是各自的,互不相干。这是因为C语言规定,在某个函数内定义的变量,只能

在本函数中使用,其他函数不能使用。因此max()函数中的float a,b;和min()函数中的float a,b;

是不同的变量,就和你有2只手,我有两只手,都叫手,但你是你的,我是我的。当变量的定义在某

个函数内部,我们叫该变量为局部变量。我们的程序4中,所有变量都是在某个函数内部定义的,

都是局部变量。

       在程序5中。我们将float a,b;移出函数,移动到紧跟着#include〈stdio.h〉,在max()、min()、

average()和main(),4个函数的前面。这一移动不要紧,一下子,变量a和b不再属于任何一个函数,

而是在函数之外定义的,对于我们这个程序,变量a和b在所有函数之前。

       C语言规定,当变量的定义不在任何函数内部,或者说变量的定义在函数之外,我们叫它全局变量

或全程变量。

       我们的程序5中的float a,b;语句定义了2个全局变量,按照C语言的规定,从这一句开始, 其后的所

有函数都可以使用这2个变量,因此max()、min()和average(),以及main()4个函数都可以使用这2个变

量。全局变量可以为本程序文件中其他函数所共用。它的有效范围为从定义变量的位置开始到本源程

序文件结束。

       你翻回头看看程序5,确实是这样的。

抱歉!评论已关闭.