C变量的存储方式

本文详细解析了全局变量、静态全局变量、静态局部变量及局部变量的区别。从存储区域、作用域、生存周期等方面进行了全面阐述,并对不同类型的变量进行了归类。

变量可以分为全局变量、静态全局变量、静态局部变量和局部变量


按存储区域分:全局变量、静态全局变量和静态局部变量都存放在内存的全局数据区,局部变量存放在内存的栈区


按作用域分:全局变量在整个工程文件内都有效;静态全局变量只在定义它的文件内有效;静态局部变量只在定义它的函数内有效,只是程序仅分配一次内存,函数返回后,该变量不会消失;局部变量在定义它的函数内有效,但是函数返回后失效。


全局变量和静态变量如果没有手工初始化,则由编译器初始化为0。局部变量的值不可知。


=================

根据谭浩强的C总结:

作用角度度分:

      局部变量:

                自动变量,即动态局部变量(离开函数,值就消失)

                静态局部变量(离开函数,值保留)

                寄存器变量(离开函数,值就消失)

                (形式参数可以定义为自动变量或寄存器变量)

     全局变量:

                静态外部变量(只限本文件应用)

                  外部变量(即非静态的外部变量,运行其他文件应用)


生存周期划分:

      动态存储:在调用函数时临时分配单元;

      静态存储:程序整个运行时间都存在;


         动态存储:

                自动变量(本函数内有效)

                寄存器变量(本函数内有效)

                形式参数(本函数内有效)

        静态存储:

                静态局部变量(函数内有效)

                静态外部变量(本文件内 有效)

                外部变量(其他文件可以应用)


存放位置划分:

         静态存储区:

                静态局部变量

                静态外部变量(函数外部静态变量)

                外部变量(可以被其他文件引用)

        动态存储区:

               自动变量

                形式参数

                CPU中的寄存器:寄存器变量


==============================

全局变量:变量的存储类型(变量的生存期):是指为变量分配使用内存空间的方式,也称存储方式。

  1. 静态存储:外部变量(所有函数之外的定义的变量为外部变量,属全局变量,使用静态存储方式保存,保存在全局区,即静态区)和静态变量
  2. 动态存储:自动变量(属于局部变量)和寄存器变量(保存在CPU的寄存器,只有局部变量才能定义为寄存器变量,将变量定义为寄存器变量后就不能对期取址,因为寄存器是没有内存地址的)

自动变量(auto)----生存期:定义该变量的函数被调用时才给它分配存储单元,开始它的生存期,函数调用结束,释放存储单元,结束生存期;作用域:定义它的函数或复合语句内。注,系统不会为其进行默认的初使化赋值值。

寄存器变量(register)----寄存器变量是局部变量,使用动态存储方式,只有 局部自动变量和形式参数才可以作为寄存器变量。

外部变量----也称全局变量。具有全局作用域,只需在一个源文件中定义,就可以作用于所有的源文件,当然,其他不包含全局变量定义的源文件需要用extern关键字再次声明这个全局变量。

静态变量----静态局部变量:在函数内定义,但当函数退出后,静态局部变量始终还存在,其占用的内存单元不会被人释放,只有当程序结束时,才会随全局变量一起释放。生存期:整个源程序(从变量定义开始到程序结束)。作用域:定义该变量的函数内。退出该函数后,尽管该变量还存在,但不能使用它。如果再次调用定义它的函数时,它又可继续使用,而且保存了前次被人调用后留下的值;静态全局变量:只能在其所在文件模块中的函数中使用。其他文件模块中的函数将不能访问。

内存区域的划分:

  1. 栈区:由编译器自动分配和释放的内存区域,用于存放函数的参数值,局部变量的值等。随着函数的调用和返回,栈区的数据将动态变化。
  2. 堆区:程序员向系统申请或释放。若程序员在程序结束时还没有释放,则可能由操作系统回收。malloc.
  3. 全局区:用来保存全局变量和静态变量。在进入程序时分配区域,程序结束后由系统释放。
  4. 文字常量区:用于保存常量字符串的内存区域,程序结束后,由系统释放。
  5. 程序代码区:用于保存函数体的二进制代码。



,全球经济格局深刻调整,数字化浪潮席卷各行各业,智能物流作为现代物流发展的必然趋势和关键支撑,正迎来所未有的发展机遇。以人工智能、物联网、大数据、云计算、区块链等沿信息技术的快速迭代与深度融合为驱动,智能物流不再是传统物流的简单技术叠加,而是正在经历一场从自动化向智能化、从被动响应向主动预测、从信息孤岛向全面互联的深刻变革。展望2025年,智能物流系统将不再局限于提升效率、降低成本的基本目标,而是要构建一个感知更全面、决策更精准、执行更高效、协同更顺畅的智慧运行体系。这要求我们必须超越传统思维定式,以系统化、瞻性的视角,全面规划和实施智能物流系统的建设。本实施方案正是基于对行业发展趋势的深刻洞察和对未来需求的精准把握而制定。我们的核心目标在于:通过构建一个集成了先进感知技术、大数据分析引擎、智能决策算法和高效协同平台的综合智能物流系统,实现物流全链路的可视化、透明化和智能化管理。这不仅是技术层面的革新,更是管理模式和服务能力的全面提升。本方案旨在明确系统建设的战略方向、关键任务、技术路径和实施步骤,确保通过系统化部署,有效应对日益复杂的供应链环境,提升整体物流韧性,优化资源配置效率,降低运营成本,并最终为客户创造更卓越的价值体验。我们致力于通过本方案的实施,引领智能物流迈向更高水平,为构建现代化经济体系、推动高质量发展提供强有力的物流保障。
电源题电赛单相并网离网软件硬件锁相环单极性双极性调制等代码及仿真环路计算资料+原理图PCB内容概要:本文档是一份关于电力电子与能源系统仿真研究的技术资料集合,涵盖单相并网/离网系统、软件与硬件锁相环设计、单极性与双极性调制技术、虚拟同步机控制建模、P2G-CCS耦合系统、微电网优化调度、光伏风电联合运行、储能配置及需求响应等多个电力系统核心主题。文档提供了大量基于Matlab/Simulink的代码实现与仿真模型,包括LLC谐振变换器小信号分析、永磁同步电机控制、DC-AC变换器设计、光伏阵列故障仿真、直流微电网建模等,并附有原理图与PCB设计资源。同时整合了智能优化算法(如遗传算法、粒子群、灰狼优化器)、机器学习模型(如LSTM、CNN-GRU-Attention)在负荷预测、故障诊断、路径规划等领域的应用案例,形成一个跨学科的科研资源包。; 适合人群:电气工程、自动化、能源系统及相关专业的研究生、科研人员以及从事电力电子、微电网、新能源控制方向的工程师;具备Matlab/Simulink编程基础和一定电力系统理论知识者更佳。; 使用场景及目标:① 支持电赛科研项目中对并网逆变器、锁相环、调制策略的设计与验证;② 用于复现高水平论文(如EI/SCI)中的优化调度、控制算法与仿真模型;③ 辅助开展微电网能量管理、储能配置、需求响应策略等课题的研究与代码开发;④ 提供可直接调用的算法模板与仿真平台,提升科研效率。; 阅读建议:建议按照文档结构逐步浏览,优先下载并整理网盘中的完整资源包,结合具体研究方向选取对应代码与模型进行调试与二次开发;对于复杂算法(如NSGA-II、ADMM、MPC),应配合文献理解其数学原理后再实施仿真;关注其中“论文复现”类内容以提升学术研究规范性与技术深度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值