Linux入门DAY14(高频难点:指针)
前言在C语言学习过程中指针属于重难点很多同学容易混淆指针数组、数组指针、指针函数、函数指针几组概念做题写代码经常踩坑。本文结合课堂笔记梳理四类高频指针知识点区分概念本质、语法、使用场景以及易错禁区适合期末复习、刷题巩固帮助理清指针相关的逻辑避开野指针、参数类型不匹配等常见bug。1 指针数组本质数组数组中存储的元素为指针。语法格式int *a[5];char *p[5];int *a[5] 代表定义数组数组可以存放5个 int* 类型指针64位环境下一个指针占8字节整个数组总大小40字节。1.1 初始化// 将数组内全部指针初始化为空指针char *p[5] {NULL};// 存放字符串常量数组保存每个字符串的首地址char *p[5] {hello,world,how,are,you};p[0] 为 char* 类型保存字符串 hello 首字符 h 的地址。1.2 指针数组 VS 二维字符数组考试高频考点//二维字符数组存储字符串本体总字节数3*100300字节char str[3][100] {hello,world,how};//指针数组仅存储各个字符串的首地址3个指针64位下占24字节char *pstr[3] {hello,world,how};项目 二维字符数组 char str[N][100] 指针数组 char *pstr[N]存储内容 保存字符串本身 保存各个字符串的首地址数组名退化类型 数组指针 char (*)[100] 二级指针 char **字符修改 可以修改数组内每一个字符 字符串常量空间不可修改排序交换 需要strcpy拷贝字符串开销大 直接交换指针效率高⚠注意二者类型不同不能互相作为函数实参传递会报类型不匹配警告。2 二级指针本质指针用于存放另一个指针变量的地址。int **p; //保存int*类型指针变量的地址char **p; //保存char*类型指针变量的地址二级指针两大使用场景1. 函数内部修改外部的指针变量想要在被调用函数修改主函数的指针变量实参传递指针变量的地址形参使用二级指针接收。2. 接收指针数组指针数组的数组名传参时会退化为二级指针函数形参用 char ** 接收。示例代码void func(char **p){}int main(){char *arr[] {aa,bb};func(arr); //数组名arr退化为 char**return 0;}3 指针函数返回指针的函数本质函数该函数的返回值是指针类型。char* fun(void); //指针函数返回char*指针✅允许返回的地址1. static修饰的静态变量的地址2. 全局变量的地址3. 字符串常量的地址4. 函数参数传递进来的内存地址5. 堆上申请、尚未释放的内存地址❌禁止返回局部普通变量、局部数组的地址。函数执行结束局部栈内存被回收返回得到野指针。错误示例int* bad(void){int a 10;return a; //错误返回野指针}4 函数指针本质指针专门用来存放函数的入口地址函数名本身就是函数入口地址。4.1 定义语法返回值类型 (*指针名)(形参类型);示例//定义函数指针pfun指向返回int、拥有两个int参数的函数int (*pfun)(int,int);4.2 完整使用示例#include stdio.hint add(int a,int b){return ab;}int main(void){//1.定义初始化为空int (*pfun)(int,int) NULL;//2.赋值保存函数入口地址pfun add;//3.调用函数两种写法等价int ret pfun(10,20);//int ret add(10,20);printf(%d,ret);return 0;}4.3 核心应用回调函数将函数指针作为另一个函数的参数进行传递这个传入的函数称为回调函数主要作用降低代码耦合度。易混概念速查表写法 名称 本质 传参退化类型char *p[5] 指针数组 数组数组元素为指针 char **char (*p)[100] 数组指针 指针指向一维数组 无char* fun() 指针函数 函数返回指针 无int (*p)(int,int) 函数指针 指针保存函数入口地址 无做题小技巧观察括号1. (*p) 带括号代表是指针2. *p[] 无括号 [] 优先和变量结合代表是数组。小结本文区分了四组极易混淆的指针相关概念指针数组、二级指针、指针函数、函数指针。1. 指针数组是数组存放一堆指针传参退化为二级指针常用来管理多个字符串常量。2. 二级指针用来存放指针的地址两大用途函数内修改外部指针、接收指针数组。3. 指针函数是函数重点记住不能返回局部栈变量地址避免野指针。4. 函数指针是指针存储函数入口主要用于实现回调函数解耦代码。指针是C语言的灵魂做题写代码时先分清“它到底是数组还是函数还是指针”很多错误就可以直接规避。

相关新闻

深入分析Xcode中SwiftUI的可视化编辑工具:Canvas、Inspector与Library

深入分析Xcode中SwiftUI的可视化编辑工具:Canvas、Inspector与Library

SwiftUI 带来的描述性构建界面能力,为 Xcode 引入诸多的可视化工具奠定了基础。可视化界面搭建,早期在网页开发中,曾经流行过,最著名的代表 Dreamweaver。如果把 HMTL 源码视为因,那么浏览器渲染的界面则为果。从最后的…

2026/10/13 19:17:39 阅读更多 →
2026上海橡塑展怎么挑选展台设计搭建公司?认准高品质搭建服务商

2026上海橡塑展怎么挑选展台设计搭建公司?认准高品质搭建服务商

2026 上海橡塑展汇聚众多橡塑材料、机械设备行业企业,海量展位同台亮相,想要抓住专业采购客商目光,高品质的展位落地效果尤为关键。不少参展企业筹备展会时,都会寻找靠谱的展台设计搭建团队。挑选合作方不能只看效果图&#xff0c…

2026/10/13 19:18:01 阅读更多 →
S7-1500 OPC UA服务器配置与UaExpert连接实战指南

S7-1500 OPC UA服务器配置与UaExpert连接实战指南

1. 从零开始:为什么我们需要OPC UA来连接S7-1500?如果你是一名工业自动化工程师,或者正在处理西门子S7-1500系列PLC的数据采集项目,那么“如何把PLC里的数据读出来”这个问题,大概率是你绕不开的起点。传统的方式&…

2026/10/13 16:38:12 阅读更多 →

最新新闻

高职财税大数据应用专业:数据分析能力培养路径与实战场景

高职财税大数据应用专业:数据分析能力培养路径与实战场景

这两年,我和不少带“高职财税大数据应用”专业的老师交流,大家最常聊的话题不是买什么新实训平台,也不是考证通过率,而是同一句话:“数据分析到底怎么真正融进财税课?”前几年,这个问题还能靠一…

2026/10/14 19:58:07 阅读更多 →
Android四大组件与AMS/WMS协作机制:系统服务核心原理与避坑实践

Android四大组件与AMS/WMS协作机制:系统服务核心原理与避坑实践

做Android开发这几年,我最大的感受就是:很多疑难杂症之所以难查,不是代码写得多烂,而是你对“四大组件”和系统服务之间那套协作机制没吃透。四大组件就像一个个打工仔,干活的逻辑全写在应用进程里,可它们能…

2026/10/14 19:58:07 阅读更多 →
React待办清单实战:从跑通到拆解状态管理与本地持久化

React待办清单实战:从跑通到拆解状态管理与本地持久化

简介:这是一份面向 React 初学者与前端进阶者的待办事项清单实战项目源码,基于 React.js 构建,配合 Node.js、Webpack 与 SCSS 完成工程化与样式组织,适合用来练习组件拆分、状态管理与列表增删交互。压缩包共 15 个文件&#xff…

2026/10/14 19:58:07 阅读更多 →
MyBatis逆向工程:从数据库Schema到可维护Mapper的工程化实践

MyBatis逆向工程:从数据库Schema到可维护Mapper的工程化实践

1. 项目概述:为什么“MyBatis逆向工程”不是偷懒捷径,而是团队提效的底层基建你有没有经历过这样的场景:一个新数据库表上线,字段12个,关联3张字典表,业务接口要查、要改、要分页、要导出——光是手写Mappe…

2026/10/14 19:58:07 阅读更多 →
真题资源高效利用:从分类索引到三轮刷题法的完整训练指南

真题资源高效利用:从分类索引到三轮刷题法的完整训练指南

简介:这是一份面向蓝桥杯参赛者的历年真题合集,涵盖省赛与国赛两个层级的代表性赛题,适用于正在备赛的本科、高职院校学生及指导老师。资源以rar压缩包形式整体打包,大小约62.1MB,便于一次性获取多届试题并离线使用&am…

2026/10/14 19:58:07 阅读更多 →
TypeScript协议适配:将Claude Code前端无缝对接Deepseek模型

TypeScript协议适配:将Claude Code前端无缝对接Deepseek模型

1. 这不是“换壳”,而是一次精准的协议层手术“80行 TypeScript Mods,把 Claude Code 改造成 Deepseek Harness”——这个标题乍看像极了某些技术圈里常见的“魔改教程”,但实际操作中,我很快意识到:它根本不是在 UI 上…

2026/10/14 19:57:05 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 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/13 22:01:27 阅读更多 →
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/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练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/14 7:53:34 阅读更多 →