本文主要介绍局部变量与全局变量的作用域,通过最后的简单的程序代码可以看出二者的作用域分别是哪里。
局部变量
关于局部变量的几点说明:
1. 局部变量是在函数内部或者复合语句中定义的变量,作用域分别为函数内部和复合语句内部。
2. 允许在不同函数中使用相同的函数名,它们代表不同的对象,分配不同的单元,互不干扰,也不会混淆。
3. 形参变量属于被调函数的局部变量,实参变量属于主调函数的局部变量。形参和实参是不同函数中的变量,作用于不同的函数中。
全局变量
关于全局变量的几点说明:
1. 在函数外部定义的变量属于全局变量,也叫外部变量。作用域是从变量定义的位置开始一直到文件结束,全局变量可以被该范围内的所有函数使用。
2. 全局变量在定义时,若未初始化,系统默认为0。
3. 全局变量可以加强函数之间的数据联系,但是会使得函数之间的独立性降低。从模块化程序设计的角度看是不利的,因此要尽可能减少使用或者不使用全局变量。
关于全局变量和局部变量的一个例子:
程序代码:
#include <stdio.h>
int a,b;
int f1(){
a = a + 10;
b = b + 15;
return a + b;
}
int f2(){
int a = 1;
a = a + 5;
b = b + 8;
return a + b;
}
main(){
int x,y;
x = f1();
printf("x=%d a=%d b=%d\n",x,a,b);
y = f2();
printf("y=%d a=%d b=%d\n",y,a,b);
}
程序运行结果:
x=25 a=10 b=15
y=29 a=10 b=23
程序说明:
1. 在同一个文件中,局部变量和全局变量可以同名。在局部变量的作用域内,全局变量不起作用。
2. 本程序中定义了全局变量a,b,在整个程序中都有效。但是在f2函数中定义了同名局部变量a,仅仅在f2中有效。
2. 在程序执行时,全局变量a,b的初始值为0,调用函数f1,将全局变量a、b的值修改为10、15,返回值为25,所以x的值为25。输出为x=25 a=10 b=15。调用f2,函数内定义了局部变量a=1,在这里全局变量a不起作用,局部变量a的值为1+5=6,全局变量b的值为15+8=23,返回值为6+23=29,所以y的值为29,输出为y=29 a=10 b=23。