c语言学习笔记之 存储类 作用区域 生命周期 连接属性

本文围绕C语言展开,解析了存储类、作用域、生命周期和链接属性等概念,介绍了Linux下C语言程序的内存映射,包括代码段、数据段、堆、栈等。还阐述了存储类相关关键字,如auto修饰局部变量、static修饰局部和全局变量、register尽量将变量分配在寄存器中。

4.7.1 概念解析
    1、存储类
        1、储存类型:描述C语言中的变量在何种地方存储。
        变量时存在内存中的
        内存有多中管理方法:栈、堆、数据段、BSS段、.text段。一个变量的属性就是描述存储在哪个内存段中。
        2、局部变量就分布在栈上,全部变量分两种,显示初始化为非0的全局变量,分配在在数据段。没有显示初始化的全局变量分配在BSS段(程序执行前自动清零)。
    2、作用域
        变量起作用的范围
        代码块作用域
        一个变量的作用域
    3、生命周期
        一个变量的诞生和死亡。运行时收回这个空间,此后不能再访问这个内存地址。挥着访问这个内存地址已经和这个 变量无关了。
        变量和内存的关系,就是和人去图书馆借书一样。
        
        研究变量的生命周期,可以理解一些C语言的现象,一些规则。
    4、链接属性
        程序从源代码到最终可执行程序。经历的过程:编译、链接。
        编译阶段就是把源代码搞成.o目标文件。
        C语言中符号有三种链接属性:外链接属性、内链接属性、无连接属性
        
        以上4个概念就是从不同角度分析C语言运行规则。
4.7.2 linux下C语言程序的内存映射
    1、代码段、只读数据段
        对应程序中的代码(函数),代码段在linux中又叫文本段.text段。
        只读数据段就是在程序运行器件不能写。
        const修饰的常量 有可能是存在只读数据段。
    2、数据段、BSS段
        数据段:显示初始化为非0的全局变量,显示初始化为非0的static局部变量。
        BSS段:显示初始化为0的或者未显示初始化的全局变量。显示初始化为0的或者未显示初始化的static局部变量。
    3、堆
        C语言不会向堆中存储中西
        程序员更具需求自己判断是否需要堆内存
    4、文件映射区
        进程打开文件后,将这个文件内容先从硬盘中读取到ram中。以后直接在内存中操作,点击保存时,再将文件写进硬盘。
        
    5、栈
        局部变量分配在栈上,函数条用传参也会用到栈。
    6、内核映射区
        对linux中的每一个进行,它有认为整个系统只有自己和内核,他认为内存地址
        0xc0000000一下都是它可用地址,一张就是OS内核的运行地址。
        每一个进行都活在自己独立的进程空间
        但是内核是唯一的。
    7、OS下和逻辑程序加载的差异
        C语言 程序运行环境有一定的要求,单独写个C语言程序没法直接在内存上运行。
        需要外部一定的协助,这段协助的代码叫加载运行代码。这段代码的主要作用:再给全局变量赋值,清BSS段
4.7.3 存储类相关的关键字1
    1、auto
        auto 关键字在C语言中只有一个作用,
        修饰局部变量,表示自动局部变量,分配在栈上
        如果不初始化,值就是随机的。
        平时定义局部变量时,就是auto的,只是省略了auto关键字
    2、static
        static关键字在C语言中有2中用法,两种用法彼此独立。
        第一种用法;用来修饰局部变量,形成静态局部变量
        static 用来修饰全局变量,形成静态全局变量
        静态全局变量和非静态全局变量的区别:区别是链接属性的不同。
    3、register
        关键字不常用,那就是;register修饰的变量(一般是全局变量),
        编译器会尽量将它分配在寄存器中。这种变量被高频使用,通过定义
        为register 可以提升效率。一般慎用

内容概要:本文档围绕“并_离网风光互补制氢合成氨系统”的容量规划与调度优化问题展开,重点介绍基于Cplex求解器的数学优化模型构建与Matlab代码实现方法。内容涵盖风能、太阳能、电解水制氢、合成氨工艺等多能源耦合系统的建模,针对并网与离网两种运行模式设计优化目标(如最小化投资与运行成本、提高可再生能源消纳率),并通过Matlab调用Cplex求解混合整数线性规划(MILP)问题,实现系统容量配置与运行调度的联合优化。文中强调对实际科研论文的复现,提供完整的代码资源与YALMIP建模工具包,帮助读者掌握能源系统优化的核心建模思路与求解技术。; 适合人群:具备一定Matlab编程基础,对可再生能源系统、综合能源系统优化、数学规划(如线性规划、整数规划)有一定了解的研究生、科研人员或从事新能源系统设计的工程技术人员。; 使用场景及目标:① 学习如何构建风光制氢合成氨这类复杂多能系统的优化模型;② 掌握利用YALMIP+Matlab+Cplex进行能源系统容量配置与调度优化的全流程实现方法;③ 复现高水平学术论文中的优化模型,为自身科研工作提供技术参考和代码基础。; 阅读建议:建议读者结合提供的网盘资源,先理解系统结构与数学模型,再逐步调试Matlab代码,重点关注目标函数、约束条件的构建方式以及YALMIP的语法应用,通过修改参数和场景设置加深对优化模型的理解。【复现】并_离网风光互补制氢合成氨系统容量-调度优化分析【Cplex求解】(Matlab代码实现)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小相619

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值