A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

CANGLONG_J_P

初级黑马

  • 黑马币:27

  • 帖子:9

  • 精华:0

© CANGLONG_J_P 初级黑马   /  2015-3-19 23:29  /  1028 人查看  /  12 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1、变量的作用域
   C语言中所有变量都有自己的作用域,申明变量的类型不同,其作用域也不同。C语言中的变量,按照作用域的范围可分为两种, 即局部变量和全局变量。
1)局部变量。局部变量也称为内部变量。局部变量是在函数内作定义说明的。其作用域仅限于函数内, 离开该 函数后再使用这种变量是非法的。
例如:
  
int f1(int a)  /*函数f1*/
  
{
int b,c;
  
...... }
  
int f2(int x)  /*函数f2*/
  
{
int y,z;;
  
...... }
  
f1内定义了三个变量,a为形参,b,c为一般 变量。在  f1的范围内a,b,c有效,或者说 a,b,c变量的作用域限于f1内。
  
f2内定义了三个变量,x为形参,y,z为一般 变量。在  f2的范围内x,y,z有效,或者说 x,y,z变量的作用域限于f2内。
关于局部变量的作用域还要说明以下几点:
(1)主函数中定义的变量也只能在主函数中使用,不能在其它函数中使用。同时,主函数中 也不能使用其它函数中定义的变量。因为主函数也是一个函数,它与其它函数是平行关系。
(2)形参变量是属于被调函数的局部变量,实参变量是属于主调函数的局部变量。
(3)允许在不同的函数中使用相同的变量名,它们代表不同的对象,分配不同的单元,互不干扰,也不会发生混淆。虽然允许在不同的函数中使用相同的变量名,但是为了使程序明了易懂,不提倡在不同的函数中使用相同的变量名。
2)全局变量
  
int a,b; /*外部变量*/ void f1() /*函数f1*/
  
{ ......
  
}
  
float x,y; /*外部变量*/ int fz() /*函数fz*/
  
{ ......
  
}
全局变量也称为外部变量,它是在函数外部定义的变量。
它不属于哪一个函数,它属于一个源程序文件。其作用域是整个源程序。在函数中使用全局变 量,一般应作全局变量说明。只有在函数内经过说明的全局变量才能使用。
全局变量的说明符为extern。 但在一个函数之前定义的全局变量,在该函数内使用可不再加以说明。
例如:
从上例可以看出a、b、x、y 都是在函数外部定义的外部变量,都是全局变量。
对于全局变量还有以下几点说明:
(1)对于局部变量的定义和说明,可以不加区分。而对于外部变量则不然,外部变量的定义和外 部变量的说明并不是一回事。外部变量定义必须在所有的函数之外,且只能定义一次。 其一般形式为: [extern] 类型说明符 变量名,变量名... 其中方括号内的extern可以省去不写。
例如: int a,b; 等效于:
extern int a,b;
(2)而外部变量说明出现在要使用该外部变量的各个函数内,在整个程序内,可能出现多次,外部变量说明的一般形式为: extern 类型说明符 变量名,变量名,...; 外部变量在定义时就已 分配了内存单元,外部变量定义可作初始赋值,外部变量说明不能再赋初始值, 只是表明在函数 内要使用某外部变量。
(3)外部变量可加强函数模块之间的数据联系,但是又使函数要依赖这些变量,因而使得函数的 独立性降低。从模块化程序设计的观点来看这是不利的, 因此在不必要时尽量不要使用全局变 量。
(4)在同一源文件中,允许全局变量和局部变量同名。在局部变量的作用域内,全局变量不起作用。


12 个回复

正序浏览
不错 加油
回复 使用道具 举报
总结得不错
回复 使用道具 举报
  当把一个变量声明在函数外面  这个变量就变成全局变量
当把一个变量声明在函数里面 这个变量就是局部变量
回复 使用道具 举报
流转少年 来自手机 中级黑马 2015-3-22 00:12:03
10#
不错不错,顶一个!来自: iPhone客户端
回复 使用道具 举报
算是技术博客
回复 使用道具 举报

嘿嘿,自己总结后感觉对变量更清晰了
回复 使用道具 举报
lyz0925 发表于 2015-3-20 00:27
总结的不错,赞一个

嘿嘿,以前在学校里都是玩,现在毕业了才知道C语言的重要性.
回复 使用道具 举报
总结的不错
回复 使用道具 举报
局部的生命周期短于全局的
回复 使用道具 举报
qianlongwuyong 来自手机 中级黑马 2015-3-20 07:23:33
板凳
可以呀,小伙
回复 使用道具 举报
还好吧。。加油!
回复 使用道具 举报
总结的不错,赞一个
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马