嵌入式开发学习日志(函数传递一维 / 二维数组、变量作用域  生命周期、内存分区) day11 持续更新中
一、函数和一维字符型数组字符串数组1. 传参语法//函数定义 返回值 函数名(char 数组名[]) { 函数体; } //函数调用 函数名(数组名);示例void print_str(char str[]) { } print_str(str);2. 核心注意点一维字符数组字符串传参不需要额外传递长度依靠字符串末尾\0判断结束数组作为函数参数传递本质传递数组首元素地址 在被调函数内sizeof(形参数组名)得到的是指针大小无法计算数组长度。练习字符串四大模拟函数mystrlen自定义函数统计字符串有效字符个数mystrcpyvoid mystrcpy(char dst[], char src[]);字符串拷贝mystrcatvoid mystrcat(char dst[], char src[]);字符串拼接mystrcmp自定义字符串比较返回 0、0、0二、函数和二维整型数组1. 传参语法//函数定义 返回值 函数名(int 数组名[][列数], int 行数) { } //调用 函数名(数组名, 行数);示例int a[3][4] {0}; void print_2D_array(int a[][4], int hang) { } print_2D_array(a, sizeof(a)/sizeof(a[0]));2. ⭐二维数组形参行数可以省略列数绝对不能省略正确int a[][4]错误int a[3][]在自定义函数内部无法通过 sizeof 计算总行数行数必须通过参数传入列数可以在函数内计算int lie sizeof(a[0]) / sizeof(a[0][0]);三、函数和二维字符型数组存放多个字符串1. 传参语法//定义 返回值 函数名(char 数组名[][列数], int 行数) {} //调用 函数名(数组名, 行数);示例char str[3][100] {0}; void print_2DC_array(char str[][100], int hang) { } print_2DC_array(str, 3);本质规则和二维整型数组一致必须指定每行字符串最大长度列数。易错提醒❌ 不能直接对二维字符数组整体使用strcpy ✅ 只能循环逐行调用strcpy每行str[i]才是合法字符串。四、变量的作用域空间角度哪里能访问作用域变量 / 标识符能够被访问、使用的代码范围。局部作用域{ }内部局部变量函数内定义变量、函数形参仅大括号内可用。全局作用域所有函数外部定义全局变量整个程序任意位置都可以访问。三条重要规则标识符遵循先定义后使用同一个作用域内不能定义同名变量 / 函数嵌套包含的作用域出现同名变量就近原则内层屏蔽外层同名变量。经典例题全局 i 与 main 局部 i 同名函数内访问全局 imain 内优先访问局部 i。五、变量的生命周期时间角度内存存活多久生命周期变量从分配内存到内存回收的时间段。1. 动态生命周期局部变量 auto进入局部范围开辟内存离开作用域内存立即回收存储在栈区。 未初始化局部变量随机垃圾值。2. 静态生命周期程序启动时分配内存整个程序运行结束才释放内存。 包含两类全局变量static修饰局部静态变量static 修饰局部变量特点作用域不变依旧只能在原本局部范围访问生命周期变长变为静态生命周期仅第一次调用初始化后续调用保留上次值。总结对照表变量类型作用域生命周期存储区域默认初始值普通局部变量 (auto)局部 {}动态出作用域释放栈区随机值全局变量整个程序静态程序结束释放数据区0static 局部变量局部 {}静态程序结束释放数据区0六、程序内存分区模型Linux gcc 环境程序运行时内存划分文本段 (.text)存放二进制代码指令只读数据区.data已经初始化的全局变量、static 静态变量.bss未初始化全局 /static 变量系统自动清零.rodata只读常量字符串常量堆区 (heap)手动申请释放malloc/free栈区 (stack)普通局部变量、函数形参函数调用自动分配回收内核区操作系统占用用户代码无法访问七、变量存储类型修饰符语法格式存储类型 数据类型 变量名;1. auto默认修饰符普通局部变量一般省略不写。2. static三大作用修饰局部变量延长生命周期保留上次数值修饰全局变量作用域限制在当前.c 文件其他文件无法 extern 访问修饰函数函数仅本文件内可用外部文件不能调用。3. register寄存器变量建议编译器将变量存放 CPU 寄存器加快访问速度只是建议编译器可以忽略限制寄存器变量不能取地址变量。4. extern用于声明外部标识符声明其他文件定义的全局变量声明其他.c 文件定义的函数extern 只做声明不会分配内存。

相关新闻

UE5材质系统实战:用2D SDF打造高性能动态UI与矢量图形

UE5材质系统实战:用2D SDF打造高性能动态UI与矢量图形

1. 项目概述:当UE5材质遇见2D SDF最近在做一个UE5项目,UI和HUD部分需要大量动态变化的矢量图形,比如平滑过渡的进度条、可任意缩放的图标、实时变形的边框。如果全用贴图,不仅资源包体积爆炸,美术同学改个颜色、调个圆…

2026/8/2 4:06:14阅读更多 →
Visual Syslog Server:Windows平台的网络日志可视化架构深度解析

Visual Syslog Server:Windows平台的网络日志可视化架构深度解析

Visual Syslog Server:Windows平台的网络日志可视化架构深度解析 【免费下载链接】visualsyslog Syslog Server for Windows with a graphical user interface 项目地址: https://gitcode.com/gh_mirrors/vi/visualsyslog 在分布式系统监控的复杂生态中&…

2026/8/2 4:04:13阅读更多 →
HarmonyOS NEXT 企业级记账APP:数据导出、备份与恢复

HarmonyOS NEXT 企业级记账APP:数据导出、备份与恢复

数据导出、备份与恢复 本文是《HarmonyOS NEXT 企业级开发实战:30篇打造智能记账APP》系列的第 25 篇,对应 Git Tag v0.2.5。承接上一篇设置中心开发,本篇深入讲解 SettingView 中的 exportData 数据导出方法与 doClear 数据清空实现&#xf…

2026/8/2 4:04:13阅读更多 →
Ascend C 算子实战(二)|SigmoidCustom 逐元素激活算子完整开发指南

Ascend C 算子实战(二)|SigmoidCustom 逐元素激活算子完整开发指南

前言前面我们完成了 AddCustom、SubCustom 二元逐元素算子开发,吃透了「Host 调度 AICore 核内流水线」标准化开发框架。本次进阶实现单输入激活算子 SigmoidCustom,完整落地 sigmoid (x) 1/(1exp (-x)) 算法。 相比加减二元算子,Sigmoid 仅…

2026/8/2 5:24:38阅读更多 →
整理上万份优质PPT模版|职场求职、汇报答辩通用网盘打包下载 PTT大全 1W套PTT模版 高质量PPT 模板 合集 全套资源 商务简约 PPT 模板 毕业答辩 工作汇报 项目路演 年会演讲 课堂作业

整理上万份优质PPT模版|职场求职、汇报答辩通用网盘打包下载 PTT大全 1W套PTT模版 高质量PPT 模板 合集 全套资源 商务简约 PPT 模板 毕业答辩 工作汇报 项目路演 年会演讲 课堂作业

文件详情下载地址链接:https://pan.quark.cn/s/c1ae5b36c56d

2026/8/2 5:24:38阅读更多 →
PDF文档过期自毁技术全解析:从原理到实践的安全管控方案

PDF文档过期自毁技术全解析:从原理到实践的安全管控方案

1. 项目概述:为数字文档加上“定时锁”在信息流转日益频繁的今天,我们常常需要将一份重要的PDF文档发送给合作伙伴、客户或团队成员。这份文档可能是一份商业计划书、一份未公开的财务报告、一份内部培训材料,或者一份限时有效的优惠券。发送…

2026/8/2 5:24:38阅读更多 →
KiCad PCB设计:从层系统解析到Gerber输出避坑指南

KiCad PCB设计:从层系统解析到Gerber输出避坑指南

1. 项目概述:为什么你需要理解KiCad的层如果你刚开始接触KiCad,或者从其他EDA工具转过来,面对软件里那一长串的层列表(F.Cu, B.Cu, F.SilkS, Edge.Cuts...),是不是感觉有点眼花缭乱,甚至有点懵&…

2026/8/2 5:24:38阅读更多 →
Spark Streaming核心原理与实战:从微批次到实时计算架构

Spark Streaming核心原理与实战:从微批次到实时计算架构

1. 从批处理到流处理:为什么Spark Streaming是实时计算的“定海神针”如果你用过Spark做批处理,那你一定体验过它处理海量离线数据时那种“力大砖飞”的快感。但数据世界不是静止的,业务对时效性的要求越来越高,报表从T1变成小时级…

2026/8/2 5:24:38阅读更多 →
陶瓷基板浆料有机转水系转型方案|涂易乐分散剂解决团聚、针孔缺陷

陶瓷基板浆料有机转水系转型方案|涂易乐分散剂解决团聚、针孔缺陷

一、行业背景与转型趋势陶瓷基板作为电子封装领域的关键基础材料,广泛应用于功率半导体、LED照明、汽车电子、5G通信等高科技领域。随着下游应用市场的快速增长和技术迭代升级,对陶瓷基板的性能要求日益严苛,同时对其生产过程的环保性也提出了…

2026/8/2 5:22:38阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/2 0:00:10阅读更多 →
限时公开!某头部SaaS公司内部AI模板工厂架构文档(含5类行业模板源码+性能压测报告)

限时公开!某头部SaaS公司内部AI模板工厂架构文档(含5类行业模板源码+性能压测报告)

更多请点击: https://intelliparadigm.com 第一章:AI模板批量生成的核心价值与落地全景 AI模板批量生成正从实验性工具演进为现代软件工程的关键基础设施。它通过语义理解、上下文感知与结构化约束,将重复性高、模式明确的代码/文档/配置生成…

2026/8/2 0:00:12阅读更多 →
如何快速找回消失的网页:Web Archives浏览器扩展终极指南

如何快速找回消失的网页:Web Archives浏览器扩展终极指南

如何快速找回消失的网页:Web Archives浏览器扩展终极指南 【免费下载链接】web-archives Browser extension for viewing archived and cached versions of web pages, available for Chrome, Edge and Safari 项目地址: https://gitcode.com/gh_mirrors/we/web-a…

2026/8/2 0:00:13阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/2 0:00:10阅读更多 →
限时公开!某头部SaaS公司内部AI模板工厂架构文档(含5类行业模板源码+性能压测报告)

限时公开!某头部SaaS公司内部AI模板工厂架构文档(含5类行业模板源码+性能压测报告)

更多请点击: https://intelliparadigm.com 第一章:AI模板批量生成的核心价值与落地全景 AI模板批量生成正从实验性工具演进为现代软件工程的关键基础设施。它通过语义理解、上下文感知与结构化约束,将重复性高、模式明确的代码/文档/配置生成…

2026/8/2 0:00:12阅读更多 →
如何快速找回消失的网页:Web Archives浏览器扩展终极指南

如何快速找回消失的网页:Web Archives浏览器扩展终极指南

如何快速找回消失的网页:Web Archives浏览器扩展终极指南 【免费下载链接】web-archives Browser extension for viewing archived and cached versions of web pages, available for Chrome, Edge and Safari 项目地址: https://gitcode.com/gh_mirrors/we/web-a…

2026/8/2 0:00:13阅读更多 →
无损视频剪辑终极指南:如何实现快速高效的多媒体处理

无损视频剪辑终极指南:如何实现快速高效的多媒体处理

无损视频剪辑终极指南:如何实现快速高效的多媒体处理 【免费下载链接】lossless-cut The swiss army knife of lossless video/audio editing 项目地址: https://gitcode.com/gh_mirrors/lo/lossless-cut 在数字媒体创作领域,视频编辑处理的质量损…

2026/8/2 1:29:34阅读更多 →
AI辅助本科论文写作:8大工具评测与高效使用指南

AI辅助本科论文写作:8大工具评测与高效使用指南

1. 本科生论文写作的AI辅助现状本科毕业论文是每个大学生必须跨越的一道坎。记得我当年写论文时,光是文献检索就花了整整两周时间,打印的参考文献堆满了半个书桌。如今AI技术的发展为学术写作带来了革命性变化,合理使用这些工具可以节省80%以…

2026/8/2 2:32:55阅读更多 →
如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手

如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手

如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手 【免费下载链接】ticket-purchase 大麦自动抢票,支持人员、城市、日期场次、价格选择 项目地址: https://gitcode.com/GitHub_Trending/ti/ticket-purchase 还在为抢不到热门演唱会门票…

2026/8/2 2:09:20阅读更多 →