当前位置: 首页 > news >正文

C语言中易混淆概念:指针、数组与函数的深度辨析

C语言中易混淆概念:指针、数组与函数的深度辨析

在学习嵌入式开发的过程中,C语言的指针变化多端。理解这些概念的关键在于:看后缀(中心词)。后缀决定了它本质是什么,前面的修饰词决定了它的属性。


1. 指针数组 vs 数组指针

这两者的区别主要在于运算符优先级:() > [] > *

指针数组 (Array of Pointers)

  • 本质:是一个数组,数组中的每个元素都是一个指针。
  • 声明int *ptr_array[10];
  • 理解:先与 [] 结合,说明是数组,再与 * 结合,说明元素类型是指针。

数组指针 (Pointer to an Array)

  • 本质:是一个指针,它指向一个完整的数组。
  • 声明int (*array_ptr)[10];
  • 理解() 强制先与 * 结合,说明本质是指针。

2. 常量指针 vs 指针常量

这是面试中最常考的陷阱,记法是:看 const 后面紧跟的是谁

常量指针 (Pointer to Constant)

  • 声明const int *p;int const *p;
  • 特点内容不可变。你不能通过这个指针修改它指向的值,但指针本身可以指向别处。
  • 口诀:常量在前,内容固定。

指针常量 (Constant Pointer)

  • 声明int *const p = &var;
  • 特点指向不可变。指针一旦指向某个地址,就不能再更改(必须在定义时初始化)。
  • 嵌入式应用:在底层开发中,硬件寄存器的地址通常定义为指针常量。
  • 口诀:指针在后,地址固定。

3. 指针函数 vs 函数指针

指针函数 (Pointer-returning Function)

  • 本质:是一个函数,它的返回值类型是一个指针。
  • 声明int* func(int x);
  • 示例malloc 函数就是一个典型的指针函数。

函数指针 (Pointer to Function)

  • 本质:是一个指针,它存储的是函数的入口地址。
  • 声明int (*func_ptr)(int x);
  • 嵌入式应用:常用于中断向量表回调函数或驱动程序的操作接口结构体。

总结表

概念 核心关键词 示例 记忆核心
指针数组 数组 int *a[5] 存了一堆指针
数组指针 指针 int (*a)[5] 整个数组的地址
常量指针 指针 const int *p 不能改指向的值
指针常量 常量 int *const p 不能改指向的地址
指针函数 函数 int *f() 返回值是地址
函数指针 指针 int (*f)() 指向代码段的函数
http://www.jsqmd.com/news/358627/

相关文章:

  • 完整教程:PhysX-Anything:从单张图像创建可用于模拟的物理 3D 资源
  • 2026激光封边机有哪些品牌可选?十大热门品牌+选型干货,避坑指南来了 - 星辉数控
  • ubuntu:vim 操作教程(视频教程版)
  • 免费vs付费AIGC工具:10款主流选项性能对比
  • 论文写作智能化:6款AI工具提升效率与成果
  • php python+vue开题报告易租房系统
  • 2026年2月幼儿防干裂唇膏推荐:干唇修护测评与儿童专属护唇指南 - 品牌鉴赏师
  • DELL R740XD安装内存方法
  • JVM--5-深入 JVM 方法区:类的元数据之家
  • php python+vue在线考试系统设计与开发开题报告
  • 《道德经》 德经第一章
  • php python+vue在线聊天系统开题报告
  • uv包管理器
  • 永磁同步电机ADRC实战:手把手拆解Simulink骚操作
  • 红黑树解析:map与set底层原理
  • 毕业论文1天搞定?实测9款AI写论文工具,8万字初稿+真实参考文献,速度与查重双保险! - 麟书学长
  • 2026年2月宝宝小支装牙膏品牌最新推荐,便携牙膏品牌实力与口碑双评 - 品牌鉴赏师
  • [提示词工程] Prompt 工程 : 如何编写高质量的 Prompt ?
  • 文件类型为默认打开方式时,接收 文件名参数
  • 【小程序毕设全套源码+文档】基于微信小程序的校园文化艺术展示app的设计与实现(丰富项目+远程调试+讲解+定制)
  • 2026 学生党必囤 AI 写论文软件:高性价比天花板清单
  • 【小程序毕设源码分享】基于springboot+小程序的校园文化艺术展示app的设计与实现(程序+文档+代码讲解+一条龙定制)
  • 电桥测量模块:支持双驱动与多接口输出 适用于比例与固定电桥
  • idea 执行 Maven 的 `clean`、`install`、`package` 等命令报错
  • 不踩雷! 10个AI论文写作软件测评:专科生毕业论文+科研写作必备工具推荐
  • 发展融、民生暖:首都都市圈协同规划的幸福密码
  • 【小程序毕设源码分享】基于springboot+Android的陪诊护理系统APP的设计与实现(程序+文档+代码讲解+一条龙定制)
  • springboot 打包及 运行打包的 jar包
  • 基于hadoop的电影推荐和分析系统设计和实现(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码
  • 【学习笔记】01BFS