C语言变量作用域


前言

就C语言来讲,函数的形参是不占用内存单元的,当函数被调用后,形参被分配内存单元,函数调用结束后,形参所占用的内存被系统回收,被释放。这一点说明形参只有在定义它的函数内才是有效的,离开函数就不能再使用了。借此引出一个问题,那就是变量的有效性范围,又称为变量的作用域。


一、全局变量

1.定义

只要是在函数外面定义的变量就是全局变量。全局变量又称外部变量。

2.代码举例

// 1.c
extern d;   //使用其他源文件中定义的全局变量
int first,second; //全局变量 first ,second
int fun()
{
     ......
     printf("%d", d);
} 
double a,b;   //全局变量 a, b;
void fun1()
{
    .....
}
全局变量的作用域是整个源程序,但是若想在源文件1.c 中使用源文件2.c定义的全局变量 d ,需要在使用前用 extern声明。

二、局部变量

1.定义

既然知道了什么是全局变量,那么剩下的变量就是局部变量了。某本书上是这样说的“局部变量就是在函数内部或者块内定义的变量”,此处块内指的是 {} 内,“局部变量只在函数内部或块内有效”。

2.代码举例

int f1(int a,b)
{
	double x ,y;
}
//变量a,b,x,y 只在f1() 函数内有效
int main()
{
	int m,n;
	...
}  
//m ,n同样也只在 main()函数内有效  
{
    int  a,b,c;
	...
	{
		int a;
		a = b + c;
	}
    ...
}
//尽管前面定义的a,b, c 在外层 {} 内都有效,但是本着“越靠近越优先”的原则,b + c 经运算后,会赋值给了后来内层 {} 内定义的 a .

总结

另外,当局部变量与全局变量同名时,若在局部变量的作用域内,全局变量不起作用,即局部变量优先。
期待与大家一同进步,欢迎指正!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值