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

相关文章