C语言第十一课:局部&全局
C语言中的变量,按作用域范围可分为两种,即局部变量和全局变量。
局部变量也称为内部变量。局部变量是在函数内作定义说明的。其作用域仅限于函数内, 离开该函数后再使用这种变量是非法的。在复合语句中也可定义变量,其作用域只在复合语句范围内。
全局变量也称为外部变量,它是在函数外部定义的变量。它不属于哪一个函数,它属于一个源程序文件。其作用域是整个源程序。
案例
#include <stdio.h>
int x = 77;
//int fn1(int x) //定义带参函数
void fn1()
{
printf("fn1(): x=%d\n", x);
}
int main()
{
int x = 10;
if(x>0)
{
int x = 100;
/*在复合语句中也可定义变量,
其作用域只在复合语句范围内,
执行完毕后返回局部变量x=10;
如果此处没有重新定义变量X,
那么在此处执行代码执行完以后,
X值将变为50继续执行下一执行块*/
x /= 2;
printf("if语句内, x=%d\n", x);
}
printf("main方法内, x=%d\n", x);
fn1();
/*fn1(x);*/
return 0;
}
变量的引用过程,类似于栈。
就是说编译器从变量引用处以最近逻辑距离开始搜索,找到后则开始使用停止则停止搜索;如果查找失败则编译出错。
举个例子来说,就是优先引用函数内部的(逻辑距离最近),其次引用同一个源文件中全局的,如果函数内部、同一个源文件中没有,再引用包含文件中的。