中华考试网·阅读新闻
编程开发 > C/C++ > 文章内容

C语言入门教程:局部变量

2016-2-7编辑:ljnbset

局部变量

局部变量也称为内部变量。局部变量是在函数内作定义说明的。其作用域仅限于函数内, 离开该函数后再使用这

种变量是非法的。

例如:

int f1(int a) /*函数 f1*/

{

int b,c;

……

}a,b,c作用域

int f2(int x) /*函数 f2*/

{

int y,z;

}x,y,z作用域

main()

{

int m,n;

}

m,n作用域 在函数f1内定义了三个变量,a为形参,b,c为一般变量。在 f1的范围内a,b,c有效,或者说a,b,c变

量的作用域限于 f1内。同理,x,y,z的作用域限于 f2内。 m,n的作用域限于main函数内。关于局部变量的作用域还

要说明以下几点:

1. 主函数中定义的变量也只能在主函数中使用,不能在其它函数中使用。同时,主函数中也不能使用其它函数中定义
的变量。因为主函数也是一个函数,它与其它函数是平行关系。这一点是与其它语言不同的,应予以注意。
2. 形参变量是属于被调函数的局部变量,实参变量是属于主调函数的局部变量。
3. 允许在不同的函数中使用相同的变量名,它们代表不同的对象,分配不同的单元,互不干扰,也不会发生混淆。如
在例5.3 中,形参和实参的变量名都为n,是完全允许的。4. 在复合语句中也可定义变量,其作用域只在复合语句范
围内。例如:
main()
{
int s,a;
……
{
int b;
s=a+b;
……b作用域
}
……s,a作用域
}[例 5.11]main()
{
int i=2,j=3,k;
k=i+j;
{
int k=8;
if(i==3) printf("%d\n",k);
}
printf("%d\n%d\n",i,k);
}
main()
{
int i=2,j=3,k;
k=i+j;
{
int k=8;



if(i=3) printf("%d\n",k);
}
printf("%d\n%d\n",i,k);
}

本程序在 main中定义了 i,j,k三个变量,其中 k未赋初值。 而在复合语句内又定义了一个变量k,并赋初值为 8。
应该注意这两个k不是同一个变量。在复合语句外由main定义的 k起作用,而在复合语句内则由在复合语句内定义的
k起作用。因此程序第4行的k为main所定义,其值应为5。第7行输出 k值,该行在复合语句内,由复合语句内定
义的 k起作用,其初值为8,故输出值为8,第 9行输出 i,k值。i是在整个程序中有效的,第7行对i赋值为3,故
以输出也为3。而第9行已在复合语句之外,输出的k应为main所定义的k,此k值由第4 行已获得为5,故输出也
为5。

C语言入门教程:变量的作用域
咨询热线:4000-525-585(免长途费)