马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 Kotori 于 2017-8-19 22:44 编辑
局部变量和全局变量
不同函数间的变量是无法相互访问的,但有些时候往往有这个需要。因此按作用域,可把变量分为局部变量和全局变量。作用域可以理解为变量的有效范围。
1>局部变量
在函数中定义的变量为局部变量,这类变量的作用域只在函数内部,出了函数就无法对变量进行操作。
定义在for循环中的循环变量也只作用在该循环中。下方代码中的i就是一个例子。for (i=0;i<10;i++)
{
a[i] = i+1;
}
2>全局变量
全局变量,定义在函数的外部,也称为外部变量。全局变量对同文件中的所有函数可见。这些函数可以访问和修改全局变量。
全局变量定义时未初始化的,会自动初始化为0。
C语言在C90之后支持在代码中定义变量。若在未定义的变量前先使用这个变量,可使用extern关键字进行修饰。
3>屏蔽模式
在函数代码中定义一个和全局变量相同名字的变量,则在函数中使用的是函数中定义的局部变量。虽然两个变量名字相同,但实际上存在于内存中两个不同的位置。这时就是函数中的局部变量屏蔽了全局变量。上方的for循环也是屏蔽的一种。int a = 1; //a是定义的一个全局变量
int calc()
{
int a =3;
printf("%d",a); //程序输出的是3,在函数中局部变量屏蔽了全局变量
}
4>全局变量的不足
虽然全局变量方便了数据在不同函数之间的传递,但是切记不要大量使用全局变量!
1)过多的全局变量会占用较多的资源,因为全局变量不会在函数结束后与局部变量一起被释放;
2)污染命名空间,对函数内命名变量带来困难;
3)提高了程序的耦合性,不便于程序的模块化设计与修改。 |