当前位置: 首页 > news >正文

C语言| 静态局部变量

C语言| 局部变量、全局变量

【自动变量】(auto)

局部变量就是auto型,可省略auto。

【静态局部变量】(static)

static修饰过的局部变量==静态局部变量,它就会存储在静态存储区了,未初始化,系统自动将其初始化为0。

静态存储区,主要用于存放静态数据和全局数据。

静态局部变量存在于程序运行的整个过程中。

【知识点总结】
1 static修饰后的局部变量,叫做静态局部变量。直到整个程序都结束,才会释放静态局部变量的内存空间。
2 定义成static型的变量是存放在静态存储区中的,在程序的整个运行过程中都不会释放。       

3 static int a; //静态局部变量未初始化,系统自动赋值 0 或者 空字符 ‘\0’ (对应字符变量)

i 静态局部变量,定义并初始化的语句,只执行一次。(只能在它作用范围内使用)每次调用,会使用上一次函数调用结束后的值。直到整个程序都结束了,才会释放空间。

ii 相当于全局变量,是因为它们都存放在静态存储区中,所以它们都一直存在程序运行的整个过程中。

4 静态局部变量(同全局变量一样)长期占用内存不放,当调用次数过多时会不知道当前变量的值是多少。静态局部变量能不用就尽量不用。

5 对于全局变量来说,

i 没有使用static修饰,那么其他文件只需要直接使用extern对该全局变量声明,就能直接使用该全局变量。

ii 使用static修饰,即使其他文件使用extern,对它进行声明,也不能使用它。

[程序代码分析]

先定义一个函数,JTJB(),主函数再调用它。
[JTJB()函数]
x定义的是静态局部变量,每次调用结束后,都不会释放。
一直存在整个程序运行中,直到整个程序都结束,才被释放。
所以,每次调用结果,x的值都有变化,相当于全局变量。
static int x=0; //只执行一次,保留上次函数调用结束的值

#include <stdio.h>

void JTJB(void); //函数声明

int main(void)
{
    JTJB();
    JTJB();
    JTJB();
    
    return 0;
}

void JTJB(void)
{
    //静态局部变量,系统自动初始化为0
    static int x;
    int y = 0;

    ++x;
    ++y;

    printf("x = %d, y = %d", x, y);
    printf("\n");

    return;
}

相关文章:

  • FastDDS Transport功能模块初步整理
  • ST25DV04K NFC TAG 使用日志
  • 发布两款AI会议耳机新品,未来智能解码AI硬件的三重价值跃迁
  • day24 python元组和OS模块的深度探索
  • Hapi.js知识框架
  • containerd 之使用 ctr 和 runc 进行底层容器操作与管理
  • 深度学习---获取模型中间层输出的意义
  • day19-线性表(顺序表)(链表I)
  • 记录为什么LIst数组“增删慢“,LinkedList链表“查改快“?
  • Vue.js---分支切换与cleanup
  • 门禁人脸识别系统详细技术文档
  • 使用聊天模型和提示模板构建一个简单的 LLM 应用程序
  • 论坛系统(中-1)
  • Excel宏和VBA
  • 【周输入】510周阅读推荐-1
  • Timsort 算法
  • Promise.all静态方法
  • 销量预测评估指标
  • Python Django基于模板的药品名称识别系统【附源码、文档说明】
  • OpenVLA (2) 机器人环境和环境数据
  • 【社论】公平有序竞争,外卖行业才能多赢
  • 超新星|18岁冲击中超金靴,王钰栋的未来无限可能
  • 第四届长三角国际应急博览会开幕,超3000件前沿装备技术亮相
  • OpenAI与微软正谈判修改合作条款,以推进未来IPO
  • 加强战略矿产出口全链条管控工作部署会召开
  • 打击网络谣言、共建清朗家园,中国互联网联合辟谣平台2025年4月辟谣榜