救命!分不清数组指针和指针数组,函数指针和指针函数?这篇一次性讲透

发布时间:2026/8/6 5:01:04

救命!分不清数组指针和指针数组,函数指针和指针函数?这篇一次性讲透
一、指针数组主体是数组数组元素为指针1. 概念定义语法格式基类型 * 数组名[长度];[]优先级高于*变量先与[]结合形成数组数组内每一个元素都是对应类型的指针64 位系统单个指针占 8 字节数组总字节 指针大小 × 数组长度。2. 示例代码#include stdio.h int main() { char *pstr[3] {Hello, World, C Language}; printf(指针数组整体占用字节%ld\n, sizeof(pstr)); printf(单个数组元素(指针)占用字节%ld\n, sizeof(pstr[0])); for (int i 0; i 3; i) { printf(pstr[%d] %s 地址%p\n, i, pstr[i], pstr[i]); } char **p pstr; printf(二级指针访问字符串%s\n, *p); return 0; }3. 使用场景存储多组字符串、命令行参数char *argv[]、批量管理地址集合。二、数组指针主体是指针指向一整个数组1. 概念定义语法格式基类型 (*指针名)[数组长度];()强制*与变量名绑定主体为指针该指针专门指向完整数组指针1会一次性偏移整个数组的内存大小指针本身固定占 8 字节64 位系统与数组长度无关arr是数组首元素地址int*arr是数组整体地址数组指针int (*)[N]。2. 示例代码#include stdio.h int main() { int a[5] {10, 20, 30, 40, 50}; int (*p)[5] a; printf(数组指针自身字节%ld\n, sizeof(p)); printf(数组首地址%pp1地址%p\n, a[0], p 1); for (int i 0; i 5; i) { printf(%d , *(*p i)); } printf(\n); int two[2][3] {{1, 2, 3}, {4, 5, 6}}; int (*p2)[3] two; printf(二维数组元素%d\n, *(*p2 1)); return 0; }3. 使用场景二维数组函数传参、批量操作整块连续数组内存。三、指针函数主体是函数返回值为指针1. 概念定义语法格式基类型 * 函数名(形参列表);主体是函数函数执行完成后返回一个对应类型的指针禁止返回局部栈变量、局部数组地址函数结束栈内存释放产生野指针合法返回全局变量地址、static 静态变量地址、字符串常量、堆内存地址、传入参数地址。2. 示例代码#include stdio.h // 指针函数返回char*字符串指针 char *getWord(int num) { if (num 1) return Apple; else if (num 2) return Banana; else return Orange; } int *getStaticNum() { static int num 999; return num; } int main() { char *str getWord(2); printf(指针函数返回字符串%s\n, str); int *p getStaticNum(); printf(指针函数返回数值%d\n, *p); return 0; }3. 错误示例野指针char *badFunc() { char buf[] test; return buf; }4. 使用场景封装获取内存地址的逻辑、字符串处理、动态内存封装。四、函数指针主体是指针存储函数入口地址1. 概念定义语法格式返回值类型 (*指针名)(形参类型列表);主体是指针用于存放函数的入口地址函数名本身就是地址指针匹配固定返回值、固定参数列表的函数核心用途回调函数、函数数组、动态切换执行逻辑。2. 基础示例代码#include stdio.h int add(int a, int b) { return a b; } int sub(int a, int b) { return a - b; } int main() { int (*pfun)(int, int) NULL; pfun add; printf(10 5 %d\n, pfun(10, 5)); pfun sub; printf(10 - 5 %d\n, pfun(10, 5)); int (*funArr[2])(int, int) {add, sub}; printf(20 3 %d20 - 3 %d\n, funArr[0](20, 3), funArr[1](20, 3)); return 0; }3. 进阶回调函数示例#include stdio.h void calc(int a, int b, int (*func)(int, int)) { printf(计算结果%d\n, func(a, b)); } int mul(int a, int b) { return a * b; } int main() { calc(6, 7, mul); // 将函数作为参数传入回调执行 return 0; }4. 使用场景回调函数、插件化开发、状态机、函数批量调度。五、四大概念对比表名称本质标准语法核心特征64 位系统内存大小指针数组数组元素全为指针int *arr[5];[]优先级高存储多个内存地址5 × 8 40 字节数组指针指针指向完整数组int (*p)[5];()包裹 *指针偏移跳过整个数组固定 8 字节指针函数函数返回指针类型int *func();调用后返回内存地址禁止返回局部栈地址无占用代码存文本段函数指针指针存储函数入口地址int (*p)(int);可赋值函数、用作回调参数固定 8 字节六、快速区分口诀运算符优先级()[]*先绑定变量名的符号决定主体int *a[5]先a[5]数组元素int*→指针数组int (*a)[5]先*a指针指向int[5]数组 →数组指针int *a()a()是函数返回int*→指针函数int (*a)()*a是指针指向无参 int 函数 →函数指针。七、总结四类概念是 C 指针进阶核心分水岭区分关键在于运算符优先级数组相关分清「存放指针的数组」和「指向数组的指针」函数相关分清「返回指针的函数」和「指向函数的指针」开发实操指针数组多字符串管理数组指针二维数组传参指针函数封装地址返回逻辑函数指针回调解耦、动态逻辑调度。

相关新闻

树莓派5安装配置VSCode全攻略:ARM64架构优化与远程开发实践

树莓派5安装配置VSCode全攻略:ARM64架构优化与远程开发实践

2026/8/6 5:01:04

1. 为什么要在树莓派5上折腾VSCode? 如果你刚拿到树莓派5,兴奋地装好了Raspberry Pi OS,打开默认的Thonny或Geany编辑器,可能会觉得差点意思。尤其是当你习惯了在主力电脑上用VSCode那种丝滑的代码补全、集成的终端和丰富的插件生…

交通行业AI落地,企业为什么需要一个“多模型API网关“?

交通行业AI落地,企业为什么需要一个“多模型API网关“?

2026/8/6 4:51:03

本文为行业技术科普,聚焦交通行业AI落地的工程化痛点与选型思路,不含任何具体产品实现细节。一、交通行业正在用AI做什么 从城市交通大脑到高速公路巡检,AI在交通领域的落地场景越来越实。归纳下来,主要有这几类: 视频…

【C++】023、移动语义深拷贝

【C++】023、移动语义深拷贝

2026/8/6 4:51:03

一、移动语言是如何解决深拷贝的性能问题?深拷贝会复制整个底层数据,让源对象和目标对象都拥有自己独立的堆内存空间移动语义是转换底层资源的所有权,将源对象的指针指向目标对象,而不赋值底层数据,时间复杂都为1移动语…

CMOS模拟电路线性化技术:权衡艺术与工程实践

CMOS模拟电路线性化技术:权衡艺术与工程实践

2026/8/6 5:51:06

1. 项目概述:模拟设计中的线性化权衡艺术在模拟集成电路设计的核心地带,线性度一直是一个让人又爱又恨的指标。我们追求完美的线性响应,希望输出信号能忠实地、无失真地复现输入信号,但现实中的晶体管、电阻、电容等元件天生就是非…

TLS流量解密实战:从Wireshark配置到Flag提取全解析

TLS流量解密实战:从Wireshark配置到Flag提取全解析

2026/8/6 5:51:06

1. 项目概述:从加密流量中捕获Flag的实战意义在网络安全竞赛和日常渗透测试中,我们常常会遇到一个看似“无解”的场景:所有的网络通信都被TLS/SSL加密了,抓到的流量包就像一团乱码,关键的认证信息、命令执行结果或者那…

基于ddddocr与BurpSuite的验证码自动化识别与绕过实战

基于ddddocr与BurpSuite的验证码自动化识别与绕过实战

2026/8/6 5:51:06

1. 项目概述与核心价值 在渗透测试和Web应用安全评估中,登录、注册、找回密码等关键功能点前的验证码,常常是自动化攻击(如暴力破解、撞库)的主要防线。传统的BurpSuite Intruder模块虽然功能强大,但在面对图形验证码时…

Prompt Engineering与Context Engineering:AI后端架构中的核心差异与协同实践

Prompt Engineering与Context Engineering:AI后端架构中的核心差异与协同实践

2026/8/6 5:51:06

如果你正在准备2026年的大厂AI后端面试,或者正在设计一个基于大模型的智能应用,那么“Prompt Engineering”和“Context Engineering”这两个词一定高频出现。很多人以为它们只是“写提示词”和“管理上下文”的文字游戏,甚至觉得后者只是前者…

每日财经知识:博格公式选股——一个公式,筛出能长期持有的好公司(基于:TuShare API)

每日财经知识:博格公式选股——一个公式,筛出能长期持有的好公司(基于:TuShare API)

2026/8/6 5:51:06

原创 | 来自北方狼 StockStudy园地 | 2026年8月5日 17:41 重庆前置说明:如需要下载本文代码(共有 360M 左右,基础数据),请大家关注微信公众号:“StockStudy园地” 后台回复: 回复:基…

Agent终于能自己花钱了,Cloudflare钱包引爆抢注潮

Agent终于能自己花钱了,Cloudflare钱包引爆抢注潮

2026/8/6 5:41:06

8月5日,社交媒体刮起了一阵橙色旋风,不少博主在X上晒出了自己橙色的钱包ID。原来是“赛博活佛”Cloudflare在8月4日晚间推出面向AI Agent的可编程钱包Cloudflare Wallets,不仅让Agent具备自主参与互联网交易的能力,也让加密基础设…

ncmdumpGUI:一键解锁网易云音乐ncm文件的终极解决方案

ncmdumpGUI:一键解锁网易云音乐ncm文件的终极解决方案

2026/8/4 15:23:37

ncmdumpGUI:一键解锁网易云音乐ncm文件的终极解决方案 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换,Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 你是否曾经从网易云音乐下载了心爱的歌曲&am…

分布式配置中心选型实战:Nacos与Consul在创业场景下的对比

分布式配置中心选型实战:Nacos与Consul在创业场景下的对比

2026/8/5 6:02:27

分布式配置中心选型实战:Nacos与Consul在创业场景下的对比工程导读:本文深入讨论 分布式配置中心选型实战:Nacos与Consul在创业场景下的对比 在生产工程实践中的核心落地方案。基于 分布式架构与微服务设计 视角,剖析实际痛点、架…

MoneyPrinterPlus实战指南:AI视频批量生成与自动化发布完整解决方案

MoneyPrinterPlus实战指南:AI视频批量生成与自动化发布完整解决方案

2026/8/5 8:19:55

MoneyPrinterPlus实战指南:AI视频批量生成与自动化发布完整解决方案 【免费下载链接】MoneyPrinterPlus AI一键批量生成各类短视频,自动批量混剪短视频,自动把视频发布到抖音,快手,小红书,视频号上,赚钱从来没有这么容易过! 支持本地语音模型chatTTS,fasterwhisper,…

Unity相机抖动插件Camera-Shake集成与应用实战指南

Unity相机抖动插件Camera-Shake集成与应用实战指南

2026/8/6 0:00:51

1. 项目概述与核心价值最近在做一个动作游戏,需要给主角的重击和爆炸场景加点料,让打击感更足。我第一时间就想到了给相机加个抖动效果,毕竟这是提升玩家沉浸感最简单直接的手段之一。自己手写一个也不是不行,但时间成本高&#x…

Cocos Creator 3.7微信小游戏开发:从架构设计到提审上线的全流程实战指南

Cocos Creator 3.7微信小游戏开发:从架构设计到提审上线的全流程实战指南

2026/8/6 0:00:51

1. 项目概述:为什么需要一份3.7版本的专属适配指南?如果你是一位使用Cocos Creator开发微信小游戏的开发者,并且项目正运行在3.7版本上,那么你很可能已经感受到了那份“甜蜜的烦恼”。一方面,Cocos Creator 3.7是一个功…

AI编程实战:从Prompt工程到工具链集成,打造高效开发工作流

AI编程实战:从Prompt工程到工具链集成,打造高效开发工作流

2026/8/6 0:00:51

1. 项目概述:一次开源AI编程课程的深度重构 最近,我把自己的开源AI编程课程《Claude Code》做了一次从里到外的大更新。如果你对利用Claude、Codex这类大模型来辅助编程感兴趣,或者正在寻找一个能跟上最新AI编码工具迭代节奏的学习路径&#…

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

2026/8/6 5:43:30

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…

导师推荐!2026最新AI论文工具测评与实用推荐

导师推荐!2026最新AI论文工具测评与实用推荐

2026/8/4 14:25:14

2026年真正好用的AI论文工具,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

告别游戏崩溃:XCOM 2模组管理器的智能革命

告别游戏崩溃:XCOM 2模组管理器的智能革命

2026/8/4 15:11:03

告别游戏崩溃:XCOM 2模组管理器的智能革命 【免费下载链接】xcom2-launcher The Alternative Mod Launcher (AML) is a replacement for the default game launchers from XCOM 2 and XCOM Chimera Squad. 项目地址: https://gitcode.com/gh_mirrors/xc/xcom2-lau…