周游C语言教程8 - 作用域
这是周游C语言的第八篇教程,你将在这篇文章里认识作用域。
作用域
作用域的意思就是在作用域内,某个变量可以被访问。超过作用域这个变量就无法被访问了。
在C语言中,变量可以分为全局变量、局部变量和形式参数。
局部变量
局部变量定义在函数或代码块内,只有函数内或者代码块内的代码可以访问这个变量。
#include <stdio.h>
int main()
{
int a = 1;
if (a == 1)
{
int b = 2;
printf("a=%d;b=%d\n",a,b);
}
// 这里无法访问变量b,所以会报错
//printf("a=%d;b=%d\n", a, b);
}
全局变量
全局变量被定义在所有函数之外,所有的函数都可以访问这个变量。
#include <stdio.h>
int a = 1;
int b = 2;
int main()
{
if (a == 1)
{
printf("a=%d;b=%d\n",a,b);
}
// 变量a和变量b都是全局变量多以可以访问
printf("a=%d;b=%d\n", a, b);
}
形式参数
形式参数在上一篇函数中已经有介绍。
区别
全局变量保存在内存的全局存储区中,占用静态的存储单元;
局部变量保存在栈中,只有在所在函数被调用时才动态地为变量分配存储单元。
如果不同作用域存在相同名字的变量,优先访问作用域较小的变量。
#include <stdio.h>
int a = 1;
int main()
{
int a = 2;
printf("a=%d\n", a);
if (a == 2)
{
int a = 3;
printf("a=%d\n", a);
}
}