解释 C 语言中变量的生命周期。


存储类指定变量的作用域、生命周期和绑定。

要完全定义一个变量,不仅需要说明它的“类型”,还需要说明它的存储类。

变量名标识计算机内存中某个物理位置,在该位置分配了一组位用于存储变量的值。

存储类告诉我们以下因素

  • 变量存储在哪里(内存或 CPU 寄存器)?
  • 如果未初始化,变量的初始值是什么?
  • 变量的作用域是什么(可以在哪里访问它)?
  • 变量的生命周期是什么?

生命周期

变量的生命周期定义了计算机为其分配内存的持续时间(内存分配和释放之间的持续时间)。

在 C 语言中,变量可以具有自动、静态或动态生命周期。

  • 自动 − 具有自动生命周期的变量在每次遇到其声明时创建,并在退出其所在的代码块时销毁。
  • 静态 − 变量在第一次执行声明时创建,并在执行停止/终止时销毁。
  • 动态 − 变量的内存通过内存管理函数分配和释放。

存储类

C 语言中有四种存储类 −

存储类存储区域默认初始值生命周期作用域关键字
自动内存直到控制权保留在代码块中直到控制权保留在代码块中局部auto
寄存器CPU 寄存器垃圾值直到控制权保留在代码块中局部寄存器
静态内存函数调用之间的值局部静态
外部内存垃圾值在整个程序执行期间全局extern

示例

以下是自动存储类的 C 程序 −

 实时演示

#include<stdio.h>
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

示例

以下是外部存储类的 C 程序 −

 实时演示

#include<stdio.h>
extern int i =1; /* this ‘i’ is available throughout program */
main ( ){
   int i = 3; /* this ‘i' available only in main */
   printf ("%d", i);
   fun ( );
}
fun ( ) {
   printf ("%d", i);
}

输出

当执行上述程序时,它会产生以下输出 −

3 1

更新于: 2024年6月20日

6K+ 次浏览

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告