在学习 C语言指针 和 多维数组 的过程中,很多初学者常常感到困惑。其实,只要理解了它们之间的关系,你会发现指针与数组是C语言中非常强大且灵活的工具。本篇 C语言教程 将从最基础的概念讲起,帮助你彻底掌握 指针与数组 的使用方法。
指针是一个变量,它存储的是另一个变量的内存地址。例如:
int a = 10;int *p = &a; // p 是一个指针,指向变量 a 的地址
通过 *p 我们可以访问或修改 a 的值。
多维数组,最常见的是二维数组,可以看作“数组的数组”。比如一个 3×4 的整型二维数组:
int arr[3][4] = { {1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}};这个数组有 3 行、4 列,总共 12 个元素。

在 C 语言中,数组名本质上是一个指向其首元素的指针。对于二维数组 arr[3][4] 来说:
arr 是一个指向第一行(即 arr[0])的指针,类型为 int (*)[4]。arr[i] 等价于 *(arr + i),表示第 i 行的首地址。arr[i][j] 等价于 *(*(arr + i) + j)。下面是一个用指针遍历二维数组的例子:
#include <stdio.h>int main() { int arr[3][4] = { {1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12} }; // 使用指针遍历二维数组 for (int i = 0; i < 3; i++) { for (int j = 0; j < 4; j++) { printf("%d ", *(*(arr + i) + j)); } printf("\n"); } return 0;}C 语言中的多维数组在内存中是连续存储的。以上面的 arr[3][4] 为例,它的内存布局如下:
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12
正因为这种连续性,我们也可以将二维数组当作一维数组来处理,使用一个普通指针即可:
int *p = &arr[0][0]; // 指向第一个元素for (int i = 0; i < 12; i++) { printf("%d ", *(p + i));}int (*)[N],不是 int **。arr = ... 是非法的,因为数组名是常量指针。通过本篇 C语言教程,我们详细讲解了 C语言指针 与 多维数组 的关系,并通过代码示例展示了如何用指针访问二维数组。掌握这些知识后,你将能更灵活地操作内存,写出高效、简洁的 C 程序。记住,指针与数组 是 C 语言的核心概念之一,多加练习才能真正融会贯通!
本文由主机测评网于2025-12-04发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/2025122696.html