目录
一,变量的作用域
二,变量的生命周期
这一章,我们来大概熟悉一下变量的作用域和生命周期。
一,变量的作用域
概念:在程序中的哪一个地方能用在哪个地方不能用。(由此可以衍生出局部变量和全局变量)
①局部变量:局部变量的作用域相对于全局变量的作用域是很小的,局部变量的作用域只在定义了它的花括号内可以使用({}),如下图:整型变量c的作用域只在while循环内可用(淡蓝框),而出了这个while循环在下面就打印不出来。整型变量b是定义在主函数里面的,所以它的作用域就是从它定义的地方往下一直到函数结束都可以使用(深蓝框)。
②全局变量:全局变量定义在花括号({})以外,作用域是从它定义的地方开始往下都可以使用,下图中整型a就是一个全局变量,全局变量在定义时如果不赋初始值的话,系统会默认初始值位零,全局变量的生命周期是从程序开始到程序结束。
二,变量的生命周期
概念:从创建到死亡的时间
①自动变量(auto):函数里面定义的局部变量,离开作用域之后自动销毁,默认不加auto表示自动变量
int num;
②寄存器变量(static):生命周期:从程序启动到程序结束
特点:第一次运算的结果将被第二次调用中代替初始值由此循环直至程序结束。
#include <stdio.h>
void fn(void)
{
int n = 10;
printf("n=%d\n", n);
n++;
printf("n++=%d\n", n);
}
void fn_static(void)
{
static int n = 10;
printf("static n=%d\n", n);
n++;
printf("n++=%d\n", n);
}
int main(void)
{
fn();
printf("--------------------\n");
fn_static();
printf("--------------------\n");
fn();
printf("--------------------\n");
fn_static();
return 0;
}
运行结果如下:
?③寄存器变量(register):寄存器寄存数量有限,且其作用不明显。直接跳过.....
④外部变量(extern):在一个源文件定义一个变量,然后将这个文件所储存的量放到同一个项目的另一个源文件很使用。
这一章到此就结束了,如果有什么地方编写的有问题可以评论区提出!谢谢!!
下一章预告:C语言运算符和表达式
|