电话:0731-83595998
导航

C语言初学者入门知识之函数04 2

来源: 2017-10-20 13:20

  二、全局变量

  全局变量也称为外部变量,它是在函数外部定义的变量。 它不属于哪一个函数,它属于一个源程序文件。其作用域是整个源程序。在函数中使用全局变量,一般应作全局变量说明。 只有在函数内经过说明的全局变量才能使用。全局变量的说明符为extern。但在一个函数之前定义的全局变量,在该函数内使用可不再加以说明。 例如:

  int a,b; /*外部变量*/

  void f1() /*函数f1*/

  {

  ……

  }

  float x,y; /*外部变量*/

  int fz() /*函数fz*/

  {

  ……

  }

  main() /*主函数*/

  {

  ……

  }/*全局变量x,y作用域 全局变量a,b作用域*/

  从上例可以看出a、b、x、y 都是在函数外部定义的外部变量,都是全局变量。但x,y 定义在函数f1之后,而在f1内又无对x,y的说明,所以它们在f1内无效。 a,b定义在源程序最前面,因此在f1,f2及main内不加说明也可使用。

  [例5.12]输入正方体的长宽高l,w,h。求体积及三个面x*y,x*z,y*z的面积。

  int s1,s2,s3;

  int vs( int a,int b,int c)

  {

  int v;

  v=a*b*c;

  s1=a*b;

  s2=b*c;

  s3=a*c;

  return v;

  }

  main()

  {

  int v,l,w,h;

  printf("ninput length,width and heightn");

  scanf("%d%d%d",&l,&w,&h);

  v=vs(l,w,h);

  printf("v=%d s1=%d s2=%d s3=%dn",v,s1,s2,s3);

  }

  本程序中定义了三个外部变量s1,s2,s3, 用来存放三个面积,其作用域为整个程序。函数vs用来求正方体体积和三个面积, 函数的返回值为体积v。由主函数完成长宽高的输入及结果输出。由于C语言规定函数返回值只有一个,当需要增加函数的返回数据时,用外部变量是一种很好的方式。本例中,如不使用外部变量, 在主函数中就不可能取得v,s1,s2,s3四个值。而采用了外部变量,在函数vs中求得的s1,s2,s3值在main 中仍然有效。因此外部变量是实现函数之间数据通讯的有效手段。对于全局变量还有以下几点说明:

  1. 对于局部变量的定义和说明,可以不加区分。而对于外部变量则不然,外部变量的定义和外部变量的说明并不是一回事。外部变量定义必须在所有的函数之外,且只能定义一次。其一般形式为: [extern] 类型说明符 变量名,变量名… 其中方括号内的extern可以省去不写。

  例如: int a,b;

  等效于:

  extern int a,b;

  而外部变量说明出现在要使用该外部变量的各个函数内,在整个程序内,可能出现多次,外部变量说明的一般形式为:extern 类型说明符 变量名,变量名,…;外部变量在定义时就已分配了内存单元,外部变量定义可作初始赋值,外部变量说明不能再赋初始值,只是表明在函数内要使用某外部变量。

  2. 外部变量可加强函数模块之间的数据联系 但是又使函数要依赖这些变量,因而使得函数的独立性降低。从模块化程序设计的观点来看这是不利的,因此在不必要时尽量不要使用全局变量。

  3. 在同一源文件中,允许全局变量和局部变量同名。在局部变量的作用域内,全局变量不起作用。

  [例5.13]

  int vs(int l,int w)

  {

  extern int h;

  int v;

  v=l*w*h;

  return v;

  }

  main()

  {

  extern int w,h;

  int l=5;

  printf("v=%d",vs(l,w));

  }

  int l=3,w=4,h=5;

  本例程序中,外部变量在最后定义,因此在前面函数中对要用的外部变量必须进行说明。外部变量l,w和vs函数的形参l,w同名。外部变量都作了初始赋值,mian函数中也对l作了初始化赋值。执行程序时,在printf语句中调用vs函数,实参l的值应为main中定义的l值,等于5,外部变量l在main内不起作用;实参w的值为外部变量w的值为4,进入vs后这两个值传送给形参l,wvs函数中使用的h 为外部变量,其值为5,因此v的计算结果为100,返回主函数后输出。变量的存储类型各种变量的作用域不同,就其本质来说是因变量的存储类型相同。所谓存储类型是指变量占用内存空间的方式,也称为存储方式。

编辑推荐:

下载Word文档

温馨提示:因考试政策、内容不断变化与调整,长理培训网站提供的以上信息仅供参考,如有异议,请考生以权威部门公布的内容为准! (责任编辑:长理培训)

网络课程 新人注册送三重礼

已有 22658 名学员学习以下课程通过考试

网友评论(共0条评论)

请自觉遵守互联网相关政策法规,评论内容只代表网友观点!

最新评论

点击加载更多评论>>

精品课程

更多
10781人学习

免费试听更多

相关推荐
图书更多+
  • 电网书籍
  • 财会书籍
  • 其它工学书籍
拼团课程更多+
  • 电气拼团课程
  • 财会拼团课程
  • 其它工学拼团
热门排行

长理培训客户端 资讯,试题,视频一手掌握

去 App Store 免费下载 iOS 客户端