news 2026/7/2 1:40:21

《指针与数组的 “爱恨情仇”》

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
《指针与数组的 “爱恨情仇”》

前言

很多初学 C 语言的同学学到数组和指针时都会一头雾水,明明写法不同,arr[2]*(arr+2)结果却完全一致。数组和指针看似高度相似,实则有着本质区别,而这块知识点,正是后续顺序表、链表底层访问的基础。

一、arr [2] 和 *(arr+2) 为什么等价?

我们先定义一个整型数组:

int arr[] = {1, 3, 5, 7, 9};

数组名arr在绝大多数场景下,代表数组首元素arr[0]的地址。 编译器底层有一条固定规则:下标访问语法 arr [i] 永远会被翻译为 *(arr + i)

  1. arr为首元素地址;
  2. arr + 2:地址向后偏移 2 个 int 长度,指向第三个元素;
  3. *(arr + 2):对偏移后的地址解引用,取出里面的值;
printf("%d", arr[2]); //输出5 printf("%d", *(arr+2)); //输出5

二、数组名的两个特殊例外

数组名不是普通指针,存在两条特殊规则:

  1. sizeof(arr):此时数组名不会退化为指针,计算整个数组全部字节大小;
  2. &arr:取出整个数组的地址,地址数值和 arr 相同,但类型为数组指针。

除此之外,函数参数赋值、算术运算时,数组名都会退化为首元素地址。

三、指针变量与数组名的核心区别

  1. 能否修改指向数组名是地址常量,不能执行arr++; 指针变量是变量,可以自由p++、修改指向。
  2. 内存占用不同数组占用一整块连续内存,存储所有有效数据; 指针变量仅占用 4 字节(32 位)/8 字节(64 位),只保存一个地址。
  3. 函数传参行为不同函数形参写作int arr[],本质等价于int* arr,数组彻底退化成指针,函数内部无法用 sizeof 获取数组真实长度。

四、对数据结构的铺垫

顺序表本质就是动态数组,依靠首地址 + 偏移量随机访问任意位置元素; 链表遍历依靠指针依次向后移动。熟练掌握地址偏移和解引用,看懂数据结构底层代码将毫无障碍。

小结数组底层永远是地址偏移 + 解引用;数组是连续内存实体,指针只是存放地址的容器。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/2 1:40:09

THPX信号源:把合规意识做到位——细节分析与提示整理

对多数外汇相关用户来说,判断平台并不需要复杂术语,关键在于信息能否被快速理解、关键提示是否容易找到、服务体验是否稳定一致。以THPX信号源为例,这里聚焦这些更贴近实际使用的亮点与细节。在外汇相关服务中,读者最在意的通常是…

作者头像 李华
网站建设 2026/7/2 1:39:14

5分钟掌握Cat-Catch:告别网页资源下载烦恼的终极神器

5分钟掌握Cat-Catch:告别网页资源下载烦恼的终极神器 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 还在为无法下载在线视频而苦恼吗&…

作者头像 李华
网站建设 2026/7/2 1:32:59

华为MetaERP Oracle EBS R12 AP 供应商主数据完整配置指南(架构师实施版)一、前置基础配置(必须先完成,否则供应商无法正常使用)(一)财务选项 Financials Opti

Oracle EBS R12 AP 供应商主数据完整配置指南(架构师实施版)一、前置基础配置(必须先完成,否则供应商无法正常使用)(一)财务选项 Financials Options(全局供应商默认参数&#xff09…

作者头像 李华
网站建设 2026/7/2 1:30:03

中小门店轻量化数智化落地指南:零成本盘活POS系统,实现降本增收

0. 前言:打破中小门店数字化的认知误区在实体门店数字化普及的当下,绝大多数街边小店、中小型商户都存在一个共性认知偏差:数智化转型是连锁品牌、大型企业的专属玩法,不仅投入成本高昂,操作门槛极高,单店体…

作者头像 李华
网站建设 2026/7/2 1:23:47

自锁垫片的防松性能怎么测?双叠自锁垫圈行业测试法

测量自锁垫片尤其是双叠自锁垫圈的防松性能,业内唯一公认且最权威的统一行业测试方法,就是“容克(Junker)横向振动试验”,看残余预紧力曲线就能定生死。干了紧固件这行这么多年,我天天跟各种重型机械设备和…

作者头像 李华