上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所示,程序运行后,会循环输出各个变量的作用域和生存周期。
实际上,变量的作用域和生存周期是其定义位置所在的一对大括号“{}”之内。如果用户在其定义位置所在的大括号之外对其进行使用,则会出现编译错误。所以,用户在使用时,必须非常注意一点。