嵌入式开发学习日志(指针与数组及传参) day12 持续更新中

发布时间:2026/11/14 10:33:21

嵌入式开发学习日志(指针与数组及传参) day12 持续更新中 一、指针与一维字符型数组的关系1. 数组名的本质一维字符数组char str[] {hello};中str是数组名它代表首元素地址即str[0]类型为char *。数组名是一个地址常量不可被赋值修改如str ...非法。2. 指针算术运算str 1指向第二个元素str[1]地址偏移量为sizeof(char)字节通常为1字节。str n指向第n1个元素等价于str[n]。解引用*(str n)等价于str[n]。3. 内存布局示意地址: 0x2000 0x2001 0x2002 0x2003 0x2004 0x2005 内容: h e l l o \0 指针: str str1 str2 str3 str4 str5注意字符串以\0结尾是C语言字符串处理的终止标志。4. 函数参数传递函数形参char str[]与char *str等价均接收数组首地址。示例int mystrlen(char str[])与int mystrlen(char *str)功能完全相同。二、数组指针1. 定义与本质数组指针本质是指针指向整个数组。语法int (*p)[5];—— 声明一个指针p它指向一个包含5个int元素的数组。该指针变量本身占8字节64位系统但其指向的内存块大小为5 * sizeof(int)。2. 与普通指针的区别int a[5] {1,2,3,4,5};a或a[0]类型为int *指向首元素。a类型为int (*)[5]指向整个数组。a 1偏移sizeof(int)字节 → 指向a[1]。a 1偏移sizeof(a)字节 → 指向数组末尾之后的位置即跳过整个数组。3. 内存布局示意地址: 0x2000 0x2004 0x2008 0x200C 0x2010 0x2014 内容: 1 2 3 4 5 (越界) 指针: a a1 a2 a3 a4 a1 ↑ a (指向整个数组)4. 特别注意sizeof(a)返回整个数组大小如5 * 4 20字节。a不能当作int *使用其类型是int (*)[5]用于指向数组整体。三、指针与二维数组1. 二维数组的本质二维数组int a[2][3] {1,2,3,4,5,6};在内存中是连续存储的按行优先排列。数组名a代表首行地址即a[0]类型为int (*)[3]指向含3个int的一维数组。a[0]是第一行的数组名类型为int *指向a[0][0]。a[1]是第二行的数组名类型为int *指向a[1][0]。2. 指针运算与访问a 1→ 指向第二行即a[1]偏移量为3 * sizeof(int)。*(a m) n→ 等价于a[m][n]。*(*(a m) n)→ 等价于a[m][n]。3. 内存布局示意地址: 0x2000 0x2004 0x2008 0x200C 0x2010 0x2014 内容: 1 2 3 4 5 6 行指针: a[0] ← a[0][0]~a[0][2] a[1] ← a[1][0]~a[1][2] 整体指针: a → a[0], a1 → a[1]4. 作为函数参数传递二维数组作函数参数时必须指定列数行数可省略。正确写法void print_2D_array(int a[][3], int hang); // 列数必须指定 void print_2D_array(int (*pa)[3], int hang); // 数组指针形式调用print_2D_array(a, 2);字符型二维数组同理char str[3][100] {hello, world, thanks}; void print_str_array(char str[][100], int hang); void print_str_array(char (*pstr)[100], int hang);总结对比表概念类型含义示例一维数组名T *首元素地址str→str[0]数组指针T (*)[N]指向整个数组a→int (*)[5]二维数组名T (*)[N]首行地址a→a[0]二维数组行名T *某行首元素地址a[0]→a[0][0]函数参数传递T arr[][N]或T (*p)[N]必须指定列数void f(int a[][3])
延伸阅读

更多相关文章

2026/11/10 12:30:39

C# JSON解析实战:System.Text.Json与Newtonsoft.Json深度对比与性能优化

1. 从“字符串”到“对象”:为什么C#开发者必须掌握JSON解析 如果你用C#写过任何需要和外部系统打交道的程序,无论是调用一个Web API、读取一个配置文件,还是把数据存到NoSQL数据库里,那你肯定绕不开JSON。它就像程序员世界里的“…

2026/11/14 10:33:21

腾讯:合成书本级文档结构的教科书数据

📖标题:Beyond Rephrasing: Book-Level Organization Improves Synthetic Textbook Data for Mid-Training 🌐来源:arXiv, 2607.28109v1 🛎️文章简介 🔸研究问题:在合成教科书数据用于大模型中…

2026/11/14 10:33:09

电工证天津塘沽实操考试考什么 郑州报考避坑指南

电工证天津塘沽实操考试考什么 郑州报考避坑指南 之前考的证在外省能不能转过来?这个问题我听得太多了,特别是像你这种已经拿到证但想换地区发展的朋友。别急,今天我就从 电工证天津塘沽 入手,带你看实操考试到底考什么,再聊聊 郑州报考避坑指南…

2026/11/14 10:33:09

兰州电工证去哪里查官方回应复审延期怎么操作

兰州电工证去哪里查官方回应复审延期怎么操作 证书过期了不知道怎么复审延期?很多在兰州从事电工工作的朋友,尤其是像安阳的在职建筑工人,都会遇到这样的问题。兰州电工证去哪里查?官方回应也明确了,必须通过正规渠道进行复审延期,否则不仅影响工作,还…

2026/11/14 10:28:09

�埭溪哪考电工证在哪考最靠谱不花冤枉钱

�埭溪哪考电工证在哪考最靠谱不花冤枉钱 怕考不过白交培训费?埭溪哪考电工证其实有讲究,别再乱花钱了。很多在工地干活的朋友都遇到过,报了个培训班,结果一考试就挂,钱白花了不说,还得重新报,耽误时间又耽误事。…

2026/11/13 22:33:32

电工证丢失还能补吗?千万别踩坑,丢了证等于失业

电工证丢失还能补吗?千万别踩坑,丢了证等于失业 你正在找工作,但手里的电工证突然丢了,这下怎么办?别急,先别慌, 电工证丢失还能补吗 ?答案是肯定的,但 千万别踩坑 ,补办流程如果不了解,可能会耽误你上岗、甚至影响到你的收入。…

2026/11/14 0:06:39

土木特种工考证官方报名入口怎么找 之前考的证在外省能不能转过来

土木特种工考证官方报名入口怎么找 之前考的证在外省能不能转过来 之前考的证在外省能不能转过来?这个问题我太熟悉了,作为一名干了十几年的特种作业证书办理从业者,每年都会遇到不少像你一样在外地考了证,回来却发现无法直接使用的学员。别急,今天我就…

2026/11/14 0:06:39

电工证要多久多钱保姆级教程:工地太忙根本没时间复习考试

电工证要多久多钱保姆级教程:工地太忙根本没时间复习考试 工地太忙根本没时间复习考试,你不是一个人。在信阳浉河区,很多刚进入工地的电工都面临这样的困境:工作强度大,时间碎片化,根本没有系统复习考试的机会。但电工证是上岗的硬门槛,…

2026/11/13 22:32:11

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/13 12:14:39

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑