存储类型:决定开辟的空间在内存的哪个分区
存储类型有四种分别为:auto、extern、static、register
auto:1.只能用来修饰局部变量,修饰的变量存储在栈区。
extern:1.只能用来修饰全局变量,修饰的空间存储在静态区。
2.修饰全局变量,存储在栈区,程序可以有多个.c文件来构成,但是main函数只能有一个。extern的作用为:告诉编译器,该变量已经在其他文件中定义过了。
static:1.既可以修饰全局变量,也可以修饰局部变量,修饰的变量存储在静态区。
2.用static修饰局部变量的作用:延长局部变量的生命周期,如果局部变量没有进行,它的值为0,如果初始化了,那么只能初始化一次。
3.用static修饰的全局变量,只能在本文件内使用(限制作用域)。
register:1.只能修饰局部变量,修饰的变量存储在寄存器中
案例1:
#include <stdio.h>
int main()
{
int i;
for (i=0;i<5;i++) //循环5趟
{
int a=0;
a++;
printf("%d\n",a);
}
return 0;
}
运行结果为:
1
1
1
1
1
a为局部变量,进行初始化,值为0,在for循环中进行自加操作值为1,然后输出,如此循环5次,因此运行结果为上图所示。
案例2:
#include <stdio.h>
int main()
{
int i;
for (i=0;i<5;i++)
{
static int a=0; //只执行一次
a++;
printf("%d\n",a);
}
return 0;
}
运行结果为:
1
2
3
4
5
a为被static修饰的局部变量,a进行了初始化,因此只初始化一次(即就是int a=0只执行一次),第一趟时a进行自加操作,输出为1,在for循环中循环自加五趟,运行结果如上所示。