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/8/6 6:40:58 阅读更多 →
2026上海橡塑展怎么挑选展台设计搭建公司?认准高品质搭建服务商

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

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

2026/8/6 6:40:58 阅读更多 →
S7-1500 OPC UA服务器配置与UaExpert连接实战指南

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

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

2026/8/6 6:39:57 阅读更多 →

最新新闻

深度解析徐州城乡建设局网站:如何通过官方平台高效获取城建政策与便民服务指南

深度解析徐州城乡建设局网站:如何通过官方平台高效获取城建政策与便民服务指南

在这个数字化的时代,我们每个人的生活都与“城市”这两个字紧紧绑在一起。早上出门,你关心的是哪条路在修,会不会堵车;周末想给孩子找个好公园,你会问哪里环境好;家里要装修或者买房子,你最在意的就是周边的配套设施和未来的规划。而在这一切的背后,有一个声音最权威、…

2026/8/6 7:23:23 阅读更多 →
Unity引擎入门:核心架构、工作流与避坑指南

Unity引擎入门:核心架构、工作流与避坑指南

1. 项目概述:为什么是Unity?如果你对游戏开发、三维可视化或者任何需要实时交互3D内容的领域感兴趣,那么“Unity引擎”这个名字你大概率已经听过无数次了。它就像一个巨大的工具箱,里面装满了从搭建场景、编写逻辑到最终发布到手机…

2026/8/6 7:23:23 阅读更多 →
厨房清洁用品出海营销:KOL金字塔策略实战解析

厨房清洁用品出海营销:KOL金字塔策略实战解析

1. 项目概述:厨房清洁用品出海的营销新策略去年帮一家国内厨具品牌做欧美市场推广时,我们测试了三种不同量级的KOL组合投放策略。最让我意外的是,一组由3个头部博主20个垂类家居账号50个普通主妇账号构成的矩阵,最终转化率比单纯投…

2026/8/6 7:23:23 阅读更多 →
CANoe Test Module自动化测试:从CAPL脚本到工程化测试框架实战

CANoe Test Module自动化测试:从CAPL脚本到工程化测试框架实战

1. 从“黑盒”到“白盒”:为什么我们需要Test Module?如果你用过CANoe,最开始可能和我一样,觉得它就是个强大的总线监控和仿真工具。点点鼠标,看看Trace窗口里流动的报文,手动发几帧数据,好像也…

2026/8/6 7:23:23 阅读更多 →
Shader魔法揭秘:3D画面背后的神奇代码

Shader魔法揭秘:3D画面背后的神奇代码

引子:Shader?听起来好难啊! 嗨,小朋友! 今天我们要聊一个听起来"很酷但很吓人"的东西——叫做Shader。 Shader是什么?——别慌——我用你能听懂的话来说:Shader——就是"告诉电脑…

2026/8/6 7:22:23 阅读更多 →
Unity动画播放失效全链路排查:从资源引用到状态机逻辑的深度解析

Unity动画播放失效全链路排查:从资源引用到状态机逻辑的深度解析

1. 项目概述:当动画“哑火”时,我们在排查什么?在Unity开发中,尤其是涉及角色、UI动效或场景交互时,AnimationClip的播放是再基础不过的功能。但就是这个基础功能,却常常让开发者,无论是新手还是…

2026/8/6 7:22:23 阅读更多 →

日新闻

深入解析LimboAI C++内核:架构设计与性能优化实战

深入解析LimboAI C++内核:架构设计与性能优化实战

1. 项目概述:为什么我们需要深入LimboAI的C内核?如果你是一名使用Godot引擎的游戏开发者,尤其是对AI行为逻辑有较高要求的项目,那么LimboAI这个名字你大概率不会陌生。它作为Godot 4生态中一个备受瞩目的行为树与状态机插件&#…

2026/8/6 0:00:06 阅读更多 →
Unity 2D游戏敌人AI系统:基于PlayMaker状态机与2D Toolkit的实战开发

Unity 2D游戏敌人AI系统:基于PlayMaker状态机与2D Toolkit的实战开发

1. 项目概述与核心思路大家好,我是老张,一个在游戏开发一线摸爬滚打了十多年的老码农。今天咱们接着聊《空洞骑士》风格2D动作游戏的Demo制作。上一期我们搭好了基础框架,处理了角色移动和碰撞,这一期,我们要让游戏世界…

2026/8/6 0:00:06 阅读更多 →
被动防火门市场前景发展趋势

被动防火门市场前景发展趋势

被动防火门依靠材质结构、密闭构造阻隔烟火蔓延,无需电控启动,是建筑被动消防系统核心构件,行业依托新规管控、城市更新、工业安全升级迎来稳定扩容,整体朝着合规化、专项化、低碳化、智能化方向发展。现阶段 GB12955‑2024 新版国…

2026/8/6 0:00:06 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/5 15:00:43 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

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

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

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

2026/8/5 10:20:36 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/5 23:28:39 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/5 21:00:14 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/5 23:46:51 阅读更多 →