C语言基础语法-教案15(从小白到劝退之存储期)

LVGL v8.3 图片显示与解码缓存实战:PNG 上屏、C 数组与文件双方案 LVGL v8.3 图片两种存储方式、PNG/JPG 上屏解码器挂载、LV_IMG_CACHE_DEF_SIZE 缓存调优、手动预解码头像有效性判断,及"缓存被动画清空"真实踩坑。 阅读详情

最近给大家争取到一个 深夜福利

保证你在深夜手机刷到 嘎嘎香~

那就是  大流量卡

缺点:月租太便宜 

185GB~

100分钟通话时长~

长期套餐~

畅想自由的气息

流量自由的同时还拥有超长通话,而且免费领取。

废话不多说直接上图。

名额有限,感兴趣的家人私我或者直接加微信:lyg15314144781

流量卡

基本概念

C语言中,变量都是有一定的生存周期的,所谓生存周期指的是从分配到释放的时间间隔。为变量分配内存相当于变量的诞生,释放其内存相当于变量的死亡。从诞生到死亡就是一个变量的生命周期。

根据定义方式的不同,变量的生命周期有三种形式:

  1. 自动存储期
  2. 静态存储期
  3. 自定义存储期

自动存储期

在栈内存中分配的变量,统统拥有自动存储期,因此也都被称为自动变量。这里自动的含义,指的是这些变量的内存管理不需要开发者操心,都是全自动的:在变量定义处自动分配,出了变量的作用域自动释放。

以下三个概念是等价的:

  1. 自动变量:从存储期的角度,描述变量的时间特性。
  2. 临时变量:同上。
  3. 局部变量:从作用域的角度,描述变量的空间特性。

可以统一把它们称为栈变量,下面是示例代码:

int main()
{
    int a, b;     // 自动存储期
    static int c;
    
    f(a, b);
}

void f(int x, int y) // 自动存储期
{
}

静态存储期

在数据段中分配的变量,统统拥有静态存储期,因此也都被称为静态变量。这里静态的含义,指的是这些变量的不会因为程序的运行而发生临时性的分配和释放,它们的生命周期是恒定的,跟整个程序一致。

静态变量包含:

  1. 全局变量:不管加不加 static,任何全局变量都是静态变量。
  2. static 型局部变量。

示例代码:

int g1;        // 静态存储期
static int g2; // 静态存储期

int main()
{
    int a, b;
    static int c; // 静态存储期
}
  • 注意1:
    • 若定义时未初始化,则系统会将所有的静态数据自动初始化为0
    • 静态数据初始化语句,只会执行一遍。
    • 静态数据从程序开始运行时便已存在,直到程序退出时才释放。
  • 注意2:
    • static修饰局部变量:使之由栈内存临时数据,变成了静态数据。
    • static修饰全局变量:使之由各文件可见的静态数据,变成了本文件可见的静态数据。

自定义存储期

在堆中分配的变量,统统拥有自定义存储期,也就是说这些变量的分配和释放,都是由开发者自己决定的。由于堆内存拥有高度自治权,因此堆是程序开发中用得最多的一片区域。

  • 相关API:
    • 申请堆内存:malloc() / calloc()
    • 清零堆内存:bzero()
    • 释放堆内存:free()

功能

申请堆内存

所需头文件

#include

函数原型

void *malloc(size_t size);

void *calloc(size_t count, size_t size);

参数

size

所申请的一块堆内存的大小,单位是字节

count

所申请的堆内存的块数,所有的内存块是连续分布的、无间隔的

返回值

成功

指向子串的指针

失败

NULL

功能

清零指定内存

所需头文件

#include

函数原型

void bzero(void *s, size_t n);

参数

s

指向要清零的内存的指针

n

要清零的内存大小,单位是字节

返回值

无

功能

释放堆内存

所需头文件

#include

函数原型

void free(void *ptr);

参数

ptr

堆内存指针

返回值

无

  • 示例:
int *p = malloc(sizeof(int)); // 申请1块大小为 sizeof(int) 的堆内存
bzero(p, sizeof(int));        // 将刚申请的堆内存清零

*p = 100; // 将整型数据 100 放入堆内存中
free(p);  // 释放堆内存

// 申请3块连续的大小为 sizeof(double) 的堆内存
double *k = calloc(3, sizeof(double));

k[0] = 0.618;
k[1] = 2.718;
k[2] = 3.142;
free(k);  // 释放堆内存
  • 注意:
    • malloc()申请的堆内存,默认情况下是随机值,一般需要用 bzero() 来清零。
    • calloc()申请的堆内存,默认情况下是已经清零了的,不需要再清零。
    • free()只能释放堆内存,不能释放别的区段的内存。
  • 释放内存的含义:
    • 释放内存意味着将内存的使用权归还给系统。
    • 释放内存并不会改变指针的指向。
    • 释放内存并不会对内存做任何修改,更不会将内存清零。
图谱后端选型:Memgraph vs Neo4j vs 嵌入式 SQLite,什么时候该切换? 本文通过脚本自动探测代码图谱规模,对比SQLite、Memgraph与Neo4j在不同节点量级下的性能表现。实测表明:10万节点内嵌入式SQLite凭借低延迟和轻量部署仍具竞争力;超15万节点后,Memgraph适合低延迟、高并发场景;而Neo4j仅在百万级图谱且需复杂查询时才具备优势。配套提供一键测试延迟与平滑迁移后端的Python工具链,实现按需选型与无缝切换。 阅读详情

相关推荐

基于相位检测与锁相环的DIY超声波风速仪设计与实现

相位检测是信号处理中的一项基础技术,它通过测量两个周期信号之间的相位差来获取信息。其核心原理在于,当信号在介质中传播时,外部因素(如风速)会改变其传播速度,从而导致接收端信号的相位发生偏移。锁相环(PLL)是实现高精度相位检测的关键电路,它能动态调整本地振荡器的频率,以跟踪并锁定输入信号的相位,从而将微小的相位变化转换为易于测量的电压信号。这项技术的工程价值在于其对电路精度要求相对较低,鲁棒性好,非常适合低成本、高灵敏度的测量应用。在气象监测、工业传感和消费电子等领域,相位检测技术被广泛用于风速风向测量、位

weixin_29540599的博客 387

C/C++指针、数组与函数声明组合解析:从内存模型到实战应用

在C/C++编程中,指针、数组和函数是构建复杂数据结构和实现灵活程序逻辑的核心基础概念。指针本质上是存储内存地址的变量,它提供了对内存数据的间接访问能力;数组则是在内存中连续存储的同类元素集合,通过下标可直接定位。理解它们的组合声明,如指针数组与数组指针,关键在于掌握操作符优先级和内存布局原理。这种理解对于实现高效的内存管理、处理多维数据结构以及构建可复用代码模块具有重要技术价值。在工程实践中,这些组合广泛应用于动态字符串管理、二维数组的函数参数传递、回调机制实现等场景。本文聚焦于`int *p[n]`、`

weixin_33762130的博客 343

ElasticSearch集群搭建

docker安装es集群

weixin_46562226的博客 2026

static 的三种用法:C 语言里一个关键字的三张面孔

本文系统讲解 C 语言中 static 关键字的三种用法:修饰局部变量延长生命周期、修饰全局变量与函数限制作用域到本文件。通过一个包含三个文件的完整工程示例对照演示,并从存储期、作用域与链接性三个属性解释其统一原理,最后补充单元测试框架偏爱 static 函数的工程实践。

大模型全栈工程师 · Thanks_ks 326

进阶数据结构——链式前向星

链式前向星是一种进阶的数据结构,主要用于图的存储。我希望大家先看这个视频(蓝色字体点进去) 不然你很难理解的。在图论中,图的存储方式主要有邻接矩阵和邻接表两种。邻接矩阵虽然建图简单方便,但占内存较大,节点数量稍微大点的题目就难以使用(适合稠密图);而邻接表虽然节省空间,但其指针形式难写易错,且vector形式的读取速度较慢,易导致大数据下的超时(TLE)。针对上述问题,链式前向星作为一种折中的方式应运而生。链式前向星本质上是一种静态链表,它将数据以链表形式连接在一起。

ycs66的博客 2138

ArcMap新手必看:Shape属性中的点ZM值到底是什么?如何快速处理

本文深入解析ArcMap中Shape属性中的点ZM值,揭示其在GIS数据中的隐藏维度作用,包括Z值(高程值)和M值(测量值)。针对ZM值可能引发的服务发布问题,提供三种高效处理方案,帮助新手快速掌握数据导入时的ZM值管控策略及精准去除方法。

weixin_42561476的博客 431

【STM32】 ADC 完全指南:从模拟信号采样量化到五大架构原理

本文系统介绍ADC核心概念与五大主流架构。模拟信号具时间与幅值连续性,需经采样(满足奈奎斯特准则防混叠)、量化(引入±1/2LSB误差,SNR≈6.02N+1.76dB)、编码三步转为数字信号。重点解析Flash(并行高速但受限于比较器数量)、SAR(逐次逼近,低功耗适合MCU如STM32)、双积分(高精度抗工频,用于万用表)、流水线(高速吞吐)及Σ-Δ(高分辨率,靠过采样与噪声整形)五类架构原理、优缺点与应用场景。强调分辨率≠精度,选型本质是速度、精度、功耗与面积的权衡。

专注后端与底层技术,分享实战干货与学习笔记,梦想进入字节跳动,步履不停,热爱不止。 511

TI硬件笔试面试题型解析上

摘要: 本专栏聚焦大厂硬件笔试面试题解析,当前第14期以德州仪器(TI)为例,涵盖模拟电路与数字电路核心考点。模拟电路部分涉及最大功率传递定理、运放设计(虚短/虚断)、共模抑制比(CMRR)及高频PCB信号完整性;数字电路包括CMOS与TTL对比、建立/保持时间、竞争冒险消除、D触发器分频及“线与”逻辑实现。文章强调通过例题掌握解题方法与知识点,助力读者应对硬件工程岗位的笔试与面试挑战,附常见考点总结与实用建议。全文注重理论与实践结合,提供典型题型解析与设计思路。(150字)

启芯硬件的博客 951

嵌入式:2.STM32底层基础(存储、寄存器、时钟、总线、GPIO、寄存器点灯)

存储系统用来存放程序、数据、设备状态,核心三大作用:存放程序代码、保存运行时数据(全局、局部、栈、堆)、数据持久化(比如W25Q64 Flash,可以搭配文件系统)。

2401_86731574的博客 371

GitHub 国内加速完全指南(最新):镜像、代理与优化技巧

在国内使用 GitHub 时,经常遇到 clone 慢、打开仓库卡、GitHub Actions 不稳定 等问题。下面是整理好的 GitHub 国内镜像和加速方法大全,高效使用 GitHub。

moton2017的博客 1万+

【华为OD机试】真题A卷-Linux发行版的数量(Python)

【华为OD机试】真题A卷-Linux发行版的数量(Python):Linux操作系统有多个发行版,distrowatch.com提供了各个发行版的资料。这些发行版互相存在关联,例如Ubuntu基于Debian开发,而Mint又基于Ubuntu开发,那么我们认为Mint同Debian也存在关联。 发行版集是一个或多个相关存在关联的操作系统发行版,集合内不包含没有关联的发行版。给你一个nxn的矩阵isConnected,其中isConnected[i][i]=1表示第i个发行版和第j个发行版直接

u014481728的博客 944

基于STM32的智能浇花系统

本文设计基于STM32F103C8T6的智能浇花系统,集成DHT11、YL-69、MQ-135、GL5528四类传感器,实现温湿度、土壤湿度、CO₂浓度与光照的实时监测。系统支持自动、手动、远程三模式联动控制,通过ESP8266-01S以MQTT协议上云,配合手机APP实现数据可视化与远程指令下发。硬件采用多通道ADC采样、继电器驱动与OLED显示,软件实现精准时序控制与双向通信。测试表明系统稳定可靠,完整覆盖“感知—控制—云联”IoT全链路,具备高扩展性与工程实践价值。

weixin_45732499的博客 174

Python量化- Black-Litterman 模型

​​​​​​​Black-Litterman 模型由 Fischer Black 和 Robert Litterman 于 1992 年开发,采用贝叶斯方法进行资产配置。该模型通过结合先前的回报估计(可以从多个来源得出)并结合投资者对未来回报的独特预期来优化分配权重。

探索人工智能领域 1030

20 嵌入式系统架构:架构模式、实时操作系统、鸿蒙案例

嵌入式架构模式怎么选、RTOS 和通用操作系统差在哪、优先级反转怎么破?本篇把前后台、中断驱动、管态目态几种结构排成一条演进线,手把手算 RMS 可调度界限、判断任务集能不能跑得动,再把优先级继承与优先级天花板两种解法对上号,配鸿蒙案例讲清工程落地。

weixin_46316564的博客 215

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

认识元器件 · 单片机(MCU/MPU/SOC) · 实战篇14

本文系统阐述了STM32晶振电路设计要点,强调负载电容匹配与R_Ext必要性需基于计算验证,指出PCB寄生参数对振荡精度影响显著。重点提出振荡器PCB设计规范:缩短走线、加地保护环、分离地平面、避免串扰,并说明焊接工艺与环境防护对稳定性的重要性。同时解析内部时钟不可用于USB因温漂大,且PLL不放大ppm误差。最后推荐使用MEMS振荡器替代传统晶振,实现低功耗、小体积与高可靠性。

一只天天被叨叨的小可爱 296

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

ARM64-GNU汇编器

o伪指令分配大小例子伪指令分配大小例子.byte1 字节.byte 0x412 字节.word / .long 4 字节8 字节.ascii字符串(不加 \0)字符串(自动加 \0).byte:把 8位数当成数据插入汇编代码中。.hword和 .short:把16 位数当成数据插入汇编代码中。.long和 .int:这两个伪指令的作用相同,都把 32位数当成数据插入汇编代码中。.word:把 32位数当成数据插入汇编代码中。

weixin_43903002的博客 214

重复网格自动实例化:6400个方块背后的提交成本

这项夹具关闭了G-buffer、AO、GI、阴影、AA、MSAA和大气,用来隔离不透明实例提交成本。本文依据2026年11月9日已合并的PR #792及其中的验证记录撰写,数字不是本次重新运行的测试。这次实现把符合条件的重复不透明网格与材质组合,自动送入现有Vulkan实例化间接绘制路径。EVEngine最近合并的自动实例化改动,针对的正是这段重复工作。它们看起来不像渲染大功能,但位于每对象、每帧的循环里,数量一多就值得测量。真正可复用的是保留场景、构建参数、预热时间和日志汇总工具,再对照同源代码开关。

西风世界 139

工业物联网实战:基于边缘计算的园区机电设备预测性维护架构设计

在大型园区(楼宇自动化BA系统)的运维中,电梯、水泵、消防管网等关键机电设备的可靠性直接关系到整体安全。传统的定期巡检与事后维修模式,难以捕捉设备的偶发性故障。 本文从底层系统架构出发,探讨如何利用边缘计算与AI算法,构建一套高可用、低延迟的设备预测性维护(PdM)系统。

sxyxhwl的博客 211

注塑机数据采集网关 ZK-D1/D3 如何与 MES/IOT 平台对接并展示数据

本文系统阐述注塑车间数据采集难题及ZK-D1/D3网关解决方案,聚焦设备异构协议统一、数据建模规范与四层链路对接。通过明确设备唯一标识、统一命名规则与上行协议选择,实现多品牌注塑机数据标准化采集与传输。结合MQTT/HTTP/OPCUA多协议支持,构建从设备层到MES/IOT平台的完整链路,支撑实时看板、历史趋势、OEE分析与报警管理。强调前期标准化与端到端验证的重要性,确保数据可靠落地,赋能智能制造。

专业采集注塑机数据,为mes系统提供数据服务! 240

中科晟达注塑机数据采集网关 ZK-D1/D3:如何读取各品牌注塑机系统数据并对接 MES/IoT 平台

注塑车间数字化改造核心挑战在于多品牌、多协议设备的数据采集。中科晟达ZK-D1/D3网关通过边缘计算,兼容海天、发那科等主流机型及私有协议,支持EUROMAP63/77、Modbus、OPCUA等标准,实现南向多协议解析与北向标准化上行(MQTT/OPCUA/HTTP)。结合统一点位模型设计与断网续传机制,助力MES高效对接。部署中需重点确认通信权限、合理配置轮询周期、保障时间同步与数据去重,可有效解决“采不到数”“数据不准”等痛点,为OEE分析、工艺追溯与智能运维提供可靠数据底座。

专业采集注塑机数据,为mes系统提供数据服务! 292

越华环保集团碳惠小屋|面向碳普惠场景的 IoT 终端与碳数据链路设计方案

越华环保集团碳惠小屋这套 IoT 碳数据方案,把物联网感知技术和碳普惠业务规则深度绑定,补齐了碳普惠线下可信数据源短板。相比通用回收设备,它的核心价值在于标准化碳数据链路与可对接上层碳普惠平台的开放能力。随着各地碳普惠数字化建设提速,对合规、可溯源线下采集终端需求持续增长。这套架构具备良好扩展性,后续可以继续接入骑行、节水节电等更多低碳感知终端,作为统一的公众低碳数据采集底座,支撑区域碳普惠数字化体系持续迭代升级。

MuMuMu1223的博客 194

python标准库使用总结

它跟着 Python 解释器一起发布,跨平台(Windows / Linux / Mac / 嵌入式),文档统一,稳定性高。TCP/UDP,和 C 的 socket API 思想几乎一致,嵌入式网络开发必看。和第三方库(requests、numpy)对比:第三方要 pip 装;:IO 多路复用(epoll/poll),写服务端、高并发网络。包(标准库 HTTP 请求,不用装 requests)内置模块是标准库的子集。,是内置模块,不需要 import。包(标准库自带 HTTP 组件)

qq_28576837的博客 204

STM32串口DMA+IDLE空闲中断接收不定长数据:完整代码与避坑指南

串口接收不定长帧是嵌入式通信中最普遍的工程难题:轮询占用 CPU、定长 DMA 接收不齐、逐字节中断在 115200 波特率下每 86.8 μs 打断一次主循环。本文基于 STM32F103C8T6(72 MHz),采用 USART1

12 年嵌入式一线固件工程师。只写两种内容:板上量到的真实数据,和照着做就能定位到代码行的排查步骤。主攻 STM32 现场故障、RTOS 与显示驱动。 306

【成品设计】基于51单片机的智能鱼缸控制系统设计

本文介绍基于51单片机的智能鱼缸控制系统,实现水位、温度、浑浊度实时采集与LCD显示,支持按键手动投喂及参数设置。通过蓝牙模块连接手机APP,实现远程监测,并具备自动加水与排水功能。版本V2在V1基础上优化蓝牙通信与APP交互体验,提升智能化水平。作品设计完整,展示详实,适合爱好者参考学习。

Dev_XH 's HOME 171

嵌入式 AI 智能相机怎么选?从算力、算法架构、部署方式深度对比

在工业自动化视觉检测场景中,嵌入式 AI 智能相机正在逐步替代传统 “工业相机 + 上位机工控机” 的方案。但市面上产品参数繁杂,很多工程师选型时容易被纸面算力、宣传卖点误导。本文从**持续算力性能、算法架构设计、现场部署模式**三个核心维度,梳理嵌入式视觉设备不同技术路线的差异、适用边界与落地痛点,为机器视觉工程师、自动化集成商、产线技改负责人提供可落地的选型参考。

VisionDataLab的博客 325

软考嵌入式工程师笔记复盘

迎来正式的考试,无论是临时抱佛脚还是巩固知识,我个人总结了一份冲刺笔记。2027年上半年考试科目。

u012890771的博客 211
上一篇: C语言基础语法-教案14(从小白到劝退之作用域)
下一篇: 0基础如何进入IT行业?
栈时没有名字
博客等级 码龄5年 289粉丝 47原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值