You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言中一维、二维数组的指针式与计算式地址:区别、关联及适用场景

数组元素地址两种获取方式的区别与关联

一维数组场景

  • 指针方式:arr + i
  • 地址计算公式:基地址 + 元素大小 × 元素序号

这两种方式完全等价。在C语言里,数组名arr多数场景下会自动转换成指向首元素的指针,arr + i的底层计算逻辑就是基地址加上i个元素的内存偏移,和公式的计算过程完全一致。

  • 选用建议:写代码时直接用arr + i更简洁高效;需要理解内存布局原理时,用地址计算公式能更直观看到偏移的本质。

二维数组场景

  • 指针方式:(*(arr + i) + j)
  • 地址计算公式:基地址 + 元素大小 ×(行号 × 总列数 + 列号)

这两种方式同样完全等价,可以拆解理解:

  1. arr + i指向二维数组的第i行(二维数组的每一行都是一个一维数组),*(arr + i)会将行指针转换成该行首元素的指针;
  2. *(arr + i) + j就是该行首元素地址加上j个元素的偏移,底层计算逻辑和给出的地址公式完全匹配,也体现了二维数组在内存中连续按行存储的特性。
  • 选用建议:代码里用(*(arr + i) + j)或者更易读的&arr[i][j]都可;分析内存结构、排查内存相关问题时,地址计算公式能帮你更清晰地梳理偏移逻辑。

内容的提问来源于stack exchange,提问作者hogar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 18:23:17