嵌入式学习第十三天报告:从void指针深入理解C语言内存与指针
1. void指针通用内存操作工具1.1 void指针的基本概念void指针void *是C语言中一种特殊的指针类型它不指向任何具体的数据类型。void指针的主要特点是通用性可以指向任意类型的数据灵活性通过强制类型转换可以访问不同类型的数据内存操作主要用于内存地址的存储和传递1.2 void指针的定义与使用// void指针的定义void*pNULL;// 指向不同类型的数据intnum100;floatfnum3.14;charchA;void*vp;vpnum;// 指向整型vpfnum;// 指向浮点型vpch;// 指向字符型1.3 void指针的强制类型转换由于void指针没有具体类型使用时必须进行强制类型转换intnum100;void*vpnum;// 错误不能直接解引用void指针// *vp 200;// 正确先进行类型转换int*ip(int*)vp;*ip200;printf(num %d\n,num);// 输出2001.4 void指针的应用场景1.4.1 通用函数参数// 通用的内存设置函数voidset_memory(void*ptr,intvalue,size_tsize){unsignedchar*p(unsignedchar*)ptr;for(size_ti0;isize;i){p[i](unsignedchar)value;}}##2.二级指针指针的指针 ###2.1二级指针的概念 二级指针是指向指针的指针用于存储指针变量的地址。 cintnum100;int*pnum;// 一级指针指向intint**ppp;// 二级指针指向int*printf(num的地址: %p\n,num);printf(p的值: %p\n,p);printf(pp的值: %p\n,pp);printf(*pp的值: %p\n,*pp);// 等价于pprintf(**pp的值: %d\n,**pp);// 等价于num2.2 二级指针的应用2.2.1 修改函数外部的指针voidallocate_memory(int**ptr,intsize){*ptr(int*)malloc(size*sizeof(int));if(*ptr!NULL){for(inti0;isize;i){(*ptr)[i]i1;}}}intmain(void){int*arrayNULL;allocate_memory(array,5);// 传递指针的地址if(array!NULL){for(inti0;i5;i){printf(array[%d] %d\n,i,array[i]);}free(array);}return0;}2.2.2 字符串数组操作voidmodify_string_array(char**str_array,intindex,constchar*new_str){if(str_array!NULLindex0){// 释放旧字符串free(str_array[index]);// 分配新字符串str_array[index](char*)malloc(strlen(new_str)1);if(str_array[index]!NULL){strcpy(str_array[index],new_str);}}}3. 指针数组与数组指针3.1 指针数组指针数组是数组数组的每个元素都是指针。// 定义指针数组inta10,b20,c30;int*ptr_array[3]{a,b,c};// 访问指针数组元素for(inti0;i3;i){printf(ptr_array[%d] %p, *ptr_array[%d] %d\n,i,ptr_array[i],i,*ptr_array[i]);}// 字符串指针数组常用char*str_array[]{Hello,World,Embedded,System};for(inti0;i4;i){printf(str_array[%d] %s\n,i,str_array[i]);}3.2 数组指针数组指针是指针指向一个数组。// 定义数组指针intarr[5]{1,2,3,4,5};int(*p)[5]arr;// p是指向包含5个int的数组的指针// 访问数组元素for(inti0;i5;i){printf((*p)[%d] %d\n,i,(*p)[i]);// 等价于printf(arr[%d] %d\n, i, arr[i]);}// 二维数组与数组指针intmatrix[3][4]{{1,2,3,4},{5,6,7,8},{9,10,11,12}};int(*p_matrix)[4]matrix;// 指向包含4个int的数组的指针for(inti0;i3;i){for(intj0;j4;j){printf(%2d ,p_matrix[i][j]);// 等价于matrix[i][j]}printf(\n);}4. const指针保护数据不被修改4.1 const指针的四种形式intnum100;intvalue200;// 1. 指向常量的指针指针可变指向的值不可变constint*p1num;// *p1 300; // 错误不能修改指向的值p1value;// 正确可以改变指针的指向// 2. 常量指针指针不可变指向的值可变int*constp2num;*p2300;// 正确可以修改指向的值// p2 value; // 错误不能改变指针的指向// 3. 指向常量的常量指针指针和指向的值都不可变constint*constp3num;// *p3 300; // 错误不能修改指向的值// p3 value; // 错误不能改变指针的指向// 4. 等价于第1种intconst*p4num;// 等价于 const int *p4

相关新闻

ToastFish:让摸鱼时间变成英语提升的黄金时刻

ToastFish:让摸鱼时间变成英语提升的黄金时刻

ToastFish:让摸鱼时间变成英语提升的黄金时刻 【免费下载链接】ToastFish 一个利用摸鱼时间背单词的软件。 项目地址: https://gitcode.com/GitHub_Trending/to/ToastFish 你是否曾有过这样的体验?工作间隙刷手机、开会发呆、等待文件传输时&…

2026/10/15 21:22:36 阅读更多 →
AI代码审计实战:从静态扫描到智能安全护航的研发流程变革

AI代码审计实战:从静态扫描到智能安全护航的研发流程变革

1. 项目概述:当AI成为代码的“安检员”最近在团队内部搞了个有意思的实践,我们称之为“AI驱动的代码安全卫士”。核心就是拿华为云CodeArts的“代码智能审计助手”这个工具,深度折腾了一番,把它从一个“静态规则扫描器”用成了我们…

2026/10/15 5:47:15 阅读更多 →
SpringBoot3.x启动流程与优化实践

SpringBoot3.x启动流程与优化实践

1. SpringBoot3.x启动流程全景解析作为Java生态中最主流的应用框架,SpringBoot的启动机制一直是开发者深入理解框架的核心切入点。最近在将一个老项目迁移到SpringBoot3.x时,我系统梳理了新版启动流程的变化点,这里结合源码层级的调试分析&am…

2026/10/14 4:37:43 阅读更多 →

最新新闻

CTF新手题easychallenge:Python脚本加密与逆向思路全解析

CTF新手题easychallenge:Python脚本加密与逆向思路全解析

前两天在攻防世界的 CRYPTO 新手练习区刷题,刷到 easychallenge 这一道,名字起得特别诚实,但实战起来也不能说完全 easy。它不考复杂的数学公式,也不考高深的密码算法,更像是给你一段加密脚本,让你自己把它…

2026/10/15 21:22:32 阅读更多 →
ESP8266接OLED:从选型接线到点亮显示全教程

ESP8266接OLED:从选型接线到点亮显示全教程

你有没有过这种体验:ESP8266串口打印出来的数据堆了一屏,盯着串口监视器看得眼花缭乱,明明传感器读出了26.5℃,却没法让这个数字变成一眼能看懂的"画面"。我第一次做物联网小项目时就被这个问题卡了很久。后来接上一块0…

2026/10/15 21:22:32 阅读更多 →
嵌入式C++单链表实战:内存可控的类型擦除链表设计

嵌入式C++单链表实战:内存可控的类型擦除链表设计

1. 这不是教科书里的“单链表”,而是你明天就能抄进项目的实战结构 单链表——这三个字一出来,很多人脑子里立刻浮现出黑板上画的箭头、节点、next指针,还有老师念叨的“头结点不存数据”“遍历时间复杂度O(n)”……但现实里,我带…

2026/10/15 21:22:32 阅读更多 →
ESP8266驱动OLED屏入门:接线、配置与点亮指南

ESP8266驱动OLED屏入门:接线、配置与点亮指南

1. OLED屏与ESP8266的适配思路 手头正好有一块0.96寸的OLED屏,一直想做个小玩意儿,就顺手用ESP8266驱动了起来。先说结论:这对于入门嵌入式显示来说,是很典型也很有意思的组合——OLED功耗低、自发光、显示效果好,ESP8…

2026/10/15 21:22:32 阅读更多 →
ESP8266驱动OLED屏:从选型到点亮,玩转中文显示与动画

ESP8266驱动OLED屏:从选型到点亮,玩转中文显示与动画

做嵌入式小项目时,最烦的不是代码跑不起来,而是跑起来之后什么都看不见。传感器数据全堆在串口里,手机又懒得开,这时候给 ESP8266 配上一块 OLED 屏幕,整个项目立刻“活”了。这篇文章是 OLED 在 ESP8266 中应用系列的…

2026/10/15 21:22:32 阅读更多 →
YOLOv10【第十一章:生成式 AI 与自动标注篇·第1节】生成式 AI 如何赋能 YOLOv10:数据、标签、推理三条路线

YOLOv10【第十一章:生成式 AI 与自动标注篇·第1节】生成式 AI 如何赋能 YOLOv10:数据、标签、推理三条路线

🏆 本文收录于 《YOLOv10实战:从入门到深度优化》 专栏。 该专栏系统复现并深度梳理全网主流 YOLOv10 改进方法与工程实战案例,覆盖分类、目标检测、实例分割、多目标追踪、关键点检测、旋转目标检测等多个方向,坚持 持续更新 + 深度解析 + 工程验证。 专栏将围绕 YOLOv10…

2026/10/15 21:21:31 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/15 16:18:54 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/15 19:41:51 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/15 13:48:15 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

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

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

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

2026/10/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

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

2026/10/15 9:49:14 阅读更多 →