目录
一、什么是作用域
作用域是程序中用来定义变量存在的区域,超过这个区域的变量就不能被访问了。C语言中有三个区域可以用来声明变量:
- 在函数或块内部的局部变量
- 在所有函数外部的全局变量
- 在形式参数的函数参数定义中
二、局部变量
在某个函数的内部声明的变量称为局部变量。这些变量只能被改申明的函数使用。局部变量在函数外是不能使用的。
#include <stdio.h>
int main ()
{
/* 局部变量声明 */
int a, b;
int c;
/* 实际初始化 */
a = 10;
b = 20;
c = a + b;
printf ("value of a = %d, b = %d and c = %d\n", a, b, c);
return 0;
}
三、全局变量
全局变量是定义在函数的外部,一般都是定义在程序的顶部。全局变量在整个函数运行的时候都是有效的,在任意的函数的内部都能访问很调用全局变量。
#include <stdio.h>
/* 全局变量声明 */
int g;
int main ()
{
/* 局部变量声明 */
int a, b;
/* 实际初始化 */
a = 10;
b = 20;
g = a + b;
printf ("value of a = %d, b = %d and g = %d\n", a, b, g);
return 0;
}
在程序中,局部变量名和全局变量名是可以相同的,但是在函数内,如果两个名字一样的话,会用局部变量的值,全局变量不会被使用。
#include <stdio.h>
/* 全局变量声明 */
int g = 20;
int main ()
{
/* 局部变量声明 */
int g = 10;
printf ("value of g = %d\n", g);
return 0;
}
value of g = 10
四、形式参数
函数的参数,形式参数,被当作该函数的局部变量,如果和全局变量同名的话,他们会被有限使用。
#include <stdio.h>
/* 全局变量声明 */
int a = 20;
int main ()
{
/* 在主函数中的局部变量声明 */
int a = 10;
int b = 20;
int c = 0;
int sum(int, int);
printf ("value of a in main() = %d\n", a);
c = sum( a, b);
printf ("value of c in main() = %d\n", c);
return 0;
}
/* 添加两个整数的函数 */
int sum(int a, int b)
{
printf ("value of a in sum() = %d\n", a);
printf ("value of b in sum() = %d\n", b);
return a + b;
}
value of a in main() = 10
value of a in sum() = 10
value of b in sum() = 20
value of c in main() = 30