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)在同一源文件中,允许全局变量和局部变量同名。在局部变量的作用域内,全局变量不起作用。
分享到:
相关推荐
全局变量、局部变量、静态全局变量、静态局部变量的区别
静态全局变量,静态局部变量,全局变量,局部变量静态全局变量,静态局部变量,全局变量,局部变量
CC++中的静态全局变量,静态局部变量,全局变量,局部变量的区别
变量可以分为全局变量、静态全局变量、静态局部变量和局部变量 按存储区域分:全局变量、静态全局变量和静态局部变量都存放在内存的全局数据区,局部变量存放在内存的栈区 按作用域分:全局变量在整个工程文件内都...
在C语言编程中,全局变量和局部变量命名冲突的问题。 编程学习者的迷惑的地方!
全局变量、局部变量、静态变量三者的区别。
对于全局变量和局部变量,即使变量名相同,但是因为定义在不同的作用域内,其本质上也是不同的变量。 实例:局部变量和全局变量的对比,并输出结果。 具体实现: total = 0 # 这是一个全局变量 def sum( arg1, arg2 ...
c语言中详细解说局部变量和全局变量的关系和作用,让你明白!
全局变量和局部变量的使用;全局变量和局部变量的使用;单击“项目菜单”的“全局变量”选项,在打开的“全局变量”的对话框里可以新增和编辑全局变量。 默认有一个全局变量“OnLoadVariable”,我们单击绿色加号新增...
本文详细地讲解了c语言全局变量和局部变量问题,仔细详尽
C语言 全局变量和局部变量详解 核心内容: 1、局部变量和全局变量 变量按照作用域分为:全局变量和局部变量 全局变量的作用域:从定义位置开始到下面整个程序结束。 局部变量的作用域:在一个函数内部定义的...
主要介绍了Vue全局变量局部变量,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
通过代码的运行,并理解代码,明白C中的局部变量与本地变量的区别
详细的分析了全局变量,局部变量,static变量的区别 以及使用时用该注意的东西,很不错的。有兴趣的可以看看
全局变量&局部变量的深入剖析。讲的不错,相信很多还都不清楚的
1、局部变量能否和全局变量重名? 答:能,局部会屏蔽全局。要用全局变量,需要使用"::" ; 局部变量可以与全局变量同名, 在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器 而言...
SQL中局部变量全局变量详解.doc
全局变量局部变量全局作域局部作域全局变量在静态数据区静态局部变量在静态数据区,静态局部变量在栈区存在于整个程序运期间静态局部变量存在于整个程序运期间,静态局部变
超全面javaweb教程28天day2-_22_js的全局变量和局部变量
全局变量,静态变量,局部变量的区别,以及其内存分配情况,栈和堆的区别