C 语言中的不同存储类别
cserver side programmingprogramming更新于 2024/11/23 3:32:00
问题
C 语言中有哪些不同的存储类别?用程序解释它们?
解决方案
存储类别定义为 C 程序中存在的变量或函数的范围和生命周期。
存储类别
以下是 C 中的存储类别 −
- auto
- extern
- static
- register
自动变量/局部变量
- Keyword − auto
- 这些变量也被称为局部变量
- 作用域 −
局部变量的作用域在声明它们的块内可用。
这些变量在块内声明
- 默认值 − 垃圾值
示例
#include<stdio.h> void main (){ auto int i=1;{ auto int i=2;{ auto int i=3; printf ("%d",i); } printf("%d", i); } printf("%d", i); }
输出
3 2 1
全局变量/外部变量
- 关键字 − extern
这些变量在块外部声明,因此也称为全局变量
范围 − 全局变量的范围在整个程序中都可用。
- 默认值 − 零
示例
#include<stdio.h> extern int i =1; /* 此 ‘i’ 在整个程序中都可用 */ main (){ int i = 3; /* 此 ‘i' 仅在 main 中可用 */ printf ("%d", i); fun (); } fun (){ printf ("%d", i); }
输出
31
静态变量
- 关键字 − static
- 范围 − 静态变量的范围是它在整个程序中以及函数调用之间保留其值。
- 静态变量仅初始化一次。
- 默认值 − 零
示例
#include<stdio.h> main (){ inc (); inc (); inc (); } inc (){ static int i =1; printf ("%d", i); i++; }
输出
1 2 3
寄存器变量
- 关键字 − register
寄存器变量值存储在 CPU 寄存器中,而不是存储在普通变量所在的内存中。
寄存器是 CPU 中的临时存储单元。
示例
#include<stdio.h> main (){ register int i; for (i=1; i< =5; i++) printf ("%d",i); }
输出
1 2 3 4 5