C语言变量的作用域提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
- 前言
- 一、变量的作用域是什么?
- 二、使用步骤
- 1.局部变量
- 2.全局变量
前言 一、变量的作用域是什么?
所谓变量的作用域是指该变量的有效范围,生存期是指该变量的存在时间
形参变量只在被调用期间才分配内存单元,调用结束立即释放。这一点表明形参变量只有在函数内才是有效的,离开该函数就不能再使用了;也就是说形参变量的作用域仅限于本函数体内。不仅对于形参变量,C语言中所有的量都有自己的作用域。变量说明的方式不同,其作用域也不同。C语言中的变量,按作用范围可分为局部变量和全局变量两种。
局部变量也称为内部变量,顾名思义是在函数内部定义的变量,只在函数体内有效,离开该函数后再使用这种变量是非法的。
int f1(int a)
{int b,c; ……}
int f2(int x)
{int y,z; ……}
main()
{ int m,n;……}
在函数f1内定义了三个变量,a为形参,b、c为普通变量。在 f1的范围内a、b、c有效,或者说a、b、c变量的作用域限于f1内。同理,x、y、z的作用域限于f2内。m、n的作用域限于main函数内。关于局部变量的作用域还要说明以下几点:
1、main函数中定义的变量(m,n)也是局部变量,只在主函数中有效,不会因为它们是在主函数中定义的,就可以在整个文件或程序中访问它们。同样地,主函数中也不能使用其他函数定义的变量。
2、形参变量是属于被调函数的局部变量,实参变量是属于主调函数的局部变量。
3、允许在不同的函数中使用相同的变量名,它们代表不同的对象,分配不同的内存单元,互不干扰,也不会发生混淆。
4、在复合语句中也可定义变量,其作用域只在复合语句范围内。 如下图:
#include2.全局变量void main() { int i=2,j=3,k; k=i+j; { int k=8; printf("%dn",k); } printf("%dn",k); }
全局变量也称为外部变量,也就是说是在函数外部定义的变量。它不属于哪一个函数,而是属于一个源程序文件。一般情况下其作用域是从定义处开始一直到整个源程序文件结束。如果在函数内用全局变量的说明符为extern进行说明,则源程序文件中定义的全局变量从说明处开始有效,在一个函数之前定义的全局变量,在该函数内使用可不再加extern说明
代码如下(示例):
int a,b;
void f1()
{…… }
float x,y;
int f2()
{…… }
main()
{…… }
a、b、x、y 都是在函数外部定义的外部变量,都称为全局变量。但x、y 定义在函数f1之后,而在f1内又无对x、y的extern说明,所以它们在f1内无效。a、b定义在源程序最前面,因此在f1、f2及main内即使不加说明也可使用,如果想在函数f1中使用x、y,则必须在第3行的开始处加入如下语句:extern x,y。还有一点需要说明的是:当全局变量和局部变量同名时,局部变量起作用,而全局变量失效。
NAS存储和VR设备—VR讯



