二级C语言考试辅导教程第五章:函数[7]

二级C语言考试辅导教程第五章:函数[7],第1张

二级C语言考试辅导教程第五章:函数[7],第2张

变量的作用域
在讨论函数的参数变量时提到,参数变量只在调用过程中分配内存单元,调用后立即释放。这说明参数变量只在函数中有效,没有函数就不能使用。这种变量的有效范围称为变量的作用域。对于参数变量,C语言中所有的量都有自己的作用域。变量的解释方式不同,作用域也不同。C语言中的变量按照作用域可以分为两种,即局部变量和全局变量。

一.局部变量

局部变量也称为内部变量。局部变量在函数中定义。它的作用域仅限于函数,离开函数后使用这个变量是非法的。
例如:
int f1(int a)/* function f1 */
{
int b,c;
...
} A,B,C作用域
int f2(int x) /*函数f2*/
{
int y,z;
}x,y,z scope
main()
{
int m,n;
}
m,n的范围定义了函数f1中的三个变量,a是形参,b,c是一般变量。在f1的范围内,A,B,C有效,或者变量A,B,C的范围限定在f1。同样的,x,Y,Z,Y,Z的范围限定为f2。m,n的范围仅限于主函数。关于局部变量的范围,还应说明以下几点:

1.主函数中定义的变量只能在主函数中使用,不能在其他函数中使用。同时,在其他函数中定义的变量不能在主函数中使用。因为主函数也是函数,和其他函数有并行关系。这和其他语言不一样,要注意。资料来源:www.examda.com

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 J,K,其中K没有给初始值。在复合语句中,定义了一个变量k,初始值为8。需要注意的是,这两个K不是同一个变量。K由复合语句外的主行为定义,而K由复合语句内的主行为定义。所以程序第4行的k是由main定义的,它的值应该是5。第7行输出k的值,它在一个复合语句中。复合语句中定义的k起作用。它的初始值是8,所以输出值是8。第9行输出I和k的值,I在整个程序中都有效。I在第7行被赋值为3,所以输出也是3。第九行在复合语句之外,输出k应该是main定义的k。从第四行获得的k值为5,因此输出也是5。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 二级C语言考试辅导教程第五章:函数[7]

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情