📅  最后修改于: 2023-12-03 15:14:25.641000             🧑  作者: Mango
存储类指的是在程序中定义和使用变量时,用来描述变量的生命周期、作用域和存储方式的特性。C语言中有4种存储类:
auto存储类是所有变量的默认存储类。在函数中定义的变量,默认属于auto存储类。auto存储类的变量生命周期与函数执行周期相同,函数调用结束时变量被释放。
#include <stdio.h>
int main() {
int num = 10; //在函数内部定义变量,自动存储类
printf("num = %d\n", num);
return 0;
}
register存储类与auto存储类有相似之处,也是定义在函数内部的局部变量。不同的是,register存储类会将变量存储到CPU的寄存器中,提高访问速度。由于寄存器的数量有限,不是每个变量都能存储到寄存器中。
#include <stdio.h>
int main () {
register int num asm("eax"); //寄存器存储类
num = 10;
printf("num = %d\n", num);
return 0;
}
static存储类用于定义具有静态存储持续时间的局部变量。在函数执行时,该变量的值保持不变,知道程序结束。静态变量只会被初始化一次,即使执行函数结束后该变量也不会被释放。
#include <stdio.h>
void func() {
static int count = 0; //静态存储类
count++;
printf("count = %d\n", count);
return;
}
int main() {
func();
func();
return 0;
}
extern存储类用于在一个源文件中定义变量,另一个源文件中使用该变量。在一个文件中定义变量时,使用extern关键字使得其他文件可以访问该变量。
//file1.c
#include <stdio.h>
int count=0; //定义全局变量
void func(void) {
extern int count; //使用外部存储类声明全局变量
count++;
printf("count=%d", count);
}
//file2.c
#include <stdio.h>
extern int count; //使用外部存储类定义全局变量
void func(void);
int main() {
func();
return 0;
}
以上是C语言中四个存储类的介绍。程序员们可以根据变量的作用和需求,选择不同的存储类。