C语言从入门到精通(视频实战版)
上QQ阅读APP看书,第一时间看更新

6.1.3 函数中的变量作用域

相对于函数外部而言,在函数中,其变量也具有全局效应和局部效应。例如,在函数顶层中,定义的变量是函数中的全局变量,其作用域位于整个函数,生存周期与函数一样。而在函数的各个功能分支中所定义的变量为局部变量,其作用域只存在于其所在的功能分支中。在本节中,将介绍变量在函数中的作用域。例如,在自定义函数中,分别定义一个全局变量a和局部变量b。并且根据其作用域的不同,输出不同的提示信息以说明各个变量的生存周期。具体代码如下:

#include<stdio.h> //包含头文件
void islife() //实现自定义函数
{
    printf("定义函数全局变量a\n"); //输出提示语
    int a=0; //定义并初始化整型变量
    int c=0;
    while(a!=1) //使用while循环
    {
        printf("定义函数局部变量b\n"); //输出提示语
        int b=1; //定义并初始化局部变量b
        c+=b; //获取局部变量的累加值
        printf("%d\n",c); //输出累加值
        if(c==15) //对累加值进行判断
        {
            a=1; //如果累加了15次,则是全局变量a=1,跳出
        } //while循环
        printf("函数局部变量b的生存周期结束\n\n"); //输出提示语
    }
    printf("函数全局变量a的生存周期结束\n"); //输出提示语
        }
main() //主函数
{
    printf("主函数开始!\n"); //输出提示语
    islife(); //调用自定义函数
    printf("主函数结束!\n");
return 0; //程序正常结束
}

在实例程序的自定义函数islife()中,用户定义了两个全局变量a和c。并且在一个while循环中,定义并初始化局部变量b。通过while循环,使局部变量b的值累加15次,将累加后的值存放在全局变量c中,并输出显示。

注意 当while循环15次以后,用户应当使全局变量a的值等于1。这样,可以使while循环终止。

该实例程序运行后,会将各个变量的作用域和生存周期输出。其运行结果如图6.3所示。

图6.3 程序运行结果

注意 如图6.3所示,程序运行后,会循环输出各个变量的作用域和生存周期。

实际上,变量的作用域和生存周期是其定义位置所在的一对大括号“{}”之内。如果用户在其定义位置所在的大括号之外对其进行使用,则会出现编译错误。所以,用户在使用时,必须非常注意一点。