C语言变量生存期

本文介绍了C语言中变量的几种存储类型,包括自动存储(auto)、寄存器存储(register)、静态存储(static)和外部存储(extern)。重点讨论了静态存储变量在函数调用中的作用,即保持其值在函数调用之间的持久性。同时阐述了变量的作用域和生存期概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

变量的存储类型

储存类型说明符存储类型说明

auto

自动存储只能用于块作用域的变量声明中,局部变量默认情况下归为自动存储类型。
register寄存器存储只用于块作用域的变量,请求速度快。对于循环次数较多的循环控制变量及循环体内反复使用的变量均可定义为寄存器变量。
static静态存储载入程序时创建对象,程序结束时对象消失。
extern外部变量说明符表示声明的变量定义在别处。作用域是整个程序,生存期贯穿应用程序的开始和结束。

静态存储

文件1

#include <stdio.h>
#include <stdlib.h>
// 计算某个函数被调用次数
int main()
{
    int count = 0;
    counter();
    counter();
    counter();
    count = counter();
    // 打印调用次数
    printf("count = %d",count);
    return 0;
}

在项目下面创建源文件:文件 -> 新建 -> 文件 -> C/C++source -> C -> 选择保存的路径 -> 确定保存在对应的项目路径下面 -> 输入文件名.c结尾 -> 保存

打开创建的文件,即可编译代码

/*
用来存放计算函数调用次数的函数原型及实现
*/
// 函数原型
int counter();
// 函数定义
int counter()
{
    //加了static——静态存储每一次++,count就不会清0,保存上一次调用的结果
    static int count = 0; // 加了static第一次执行分配空间,以后不再分配空间了,本句只会执行一次
    count++;
    return count;
}

 文件创建成功过后的窗口样子

如上:实现了两个文件链接在一起 

当需要使用的变量是另一个文件里面定义的,则在当前文件需要引入外部变量 extern。以下两个截图为同一个项目下的不同的两个文件:

小结

变量的作用域

全局、局部

变量的生存期

变量的存储方式:动态存储(自动、寄存器)、静态存储(静态和外部)

由变量的存储方式不同而产生的特性称为变量的生存期(变量的存在时间)

基本类型的静态变量系统默认赋初值为0

静态变量的生存期为整个源程序,作用域只是定义它的文件

函数被调用时,其中的局部静态变量的值保留前次被调用的结果

 (^_-) 我的学习之路任重道远,咱们下期见~~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值