3.6.2 自动变量

自动变量一般是在函数的内部或者程序块中使用,是以关键字auto标识的变量类型。其定义格式为“[auto]类型说明符变量标识符,变量标识符……”。自动变量的作用域范围是函数或者程序块的内部。

在编译C51程序时,自动变量根据变量类型动态分配存储空间。在程序执行到该函数时,根据变量类型为其自动分配存储空间,当该函数执行完毕后,立即取消该变量的存储空间,即该自动变量失效。这样在该函数内部定义的变量,就不能在该函数外引用。使用自动变量的程序示例如下。


include<stdio.h>//头文件

void main()//主函数

{

int i=8;//定义整型变量

int t=6;//定义整型变量

{//程序块1开始

int i=15;//定义整型变量

int t=25;//定义整型变量

{//程序块2开始

int i=20;//定义整型变量

int t=30;//定义整型变量

printf(“i=%d,t=%d\n”,i,t);//输出

}//程序块2结束

printf(“i=%d,t=%d\n”,i,t);//输出

}//程序块1结束

printf(“i=%d,t=%d”,i,t);//输出

}


这段程序可在KeilµVision3集成开发环境中运行,执行结果如下。


i=20,t=30

i=15,t=25

i=8,t=6


在该程序中,主函数声明了整型变量i和t,然后分别嵌套两个块结构的复合语句,其中分别定义并初始化变量i和t。根据前面的介绍,这里定义的各个变量都默认为自动变量,虽然变量名相同,其作用域仅限于函数内部和块结构内部,不会影响外部的变量。

说明在C51中,函数或程序块内部定义的变量,一般都默认为自动型变量。因此,在不声明自动型变量时,关键字auto一般都可以省略。