三类指针完整解析:元素指针、行指针、数组指针步进规则

📅 2026/7/26 7:50:03 👁️ 阅读次数 📝 编程学习
三类指针完整解析:元素指针、行指针、数组指针步进规则

一、数组基础

int a[3][4]; // 3行4列 int 二维数组

int 占 4 字节

1. 普通指针 int *p

int *p; p = &a[0][0];

• p:指向单个 int 元素

• p + 1:向后偏移 1 个 int → 偏移 4 字节

• 等价于 &a[0][0] + 1,指向当前行下一个元素。

2. 数组指针 int (*p1)[4]

int (*p1)[4]; p1 = &a[0];

• p1:指向包含 4 个 int 的一维数组(一行)

• p1 + 1:向后偏移一整行一行大小:4 * 4 = 16 字节

• 等价于 &a[0] + 1,直接跳到下一行首地址。

3. 指向二维数组的指针 int (*p2)[3][4]

int (*p2)[3][4]; p2 = &a;

• p2:指向整个 3 行 4 列 的二维数组

• p2 + 1:向后偏移整个二维数组数组总大小:3 * 4 * 4 = 48 字节

• 等价于 &a + 1,跳过整个二维数组。

总结(核心区别)

指针定义指向对象+1偏移字节
int *p单个 int 元素4
int (*p1)[4]一维数组(一行)16
int (*p2)[3][4]整个二维数组48