考试首页 | 考试用书 | 培训课程 | 模拟考场 | 考试论坛  
全国  |             |          |          |          |          |         
  当前位置:计算机等级 > 二级考试 > C语言程序设计 > C语言辅导 > 文章内容
  

全国计算机等级考试二级C语言入门教程(77)

中华IT学院   【 】  [ 2016年2月24日 ]

局部变量

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

种变量是非法的。

例如:

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。

分享到:
本文纠错】【告诉好友】【打印此文】【返回顶部
将考试网添加到收藏夹 | 每次上网自动访问考试网 | 复制本页地址,传给QQ/MSN上的好友 | 申请链接 | 意见留言 TOP
关于本站  网站声明  广告服务  联系方式  站内导航  考试论坛
Copyright © 2006-2017 中华考试网(Examw.com) All Rights Reserved  营业执照