C语言数组:多维数组与指针数组详解
1. 多维数组基础
1.1 数组名的含义
一维数组名的值是一个指针常量,其类型为“指向元素类型的指针”,并指向数组的第一个元素。对于多维数组,如 int matrix[3][10];
,这里的 matrix
是一个一维数组,包含三个元素,每个元素又是一个包含十个整数的数组。 matrix
的值是一个指向包含十个整数的数组的指针,它指向第一个这样的数组。
1.2 下标操作
要从多维数组中识别单个元素,必须为每个维度提供一个下标,且下标要按照声明中维度的顺序给出,每个下标都要用方括号括起来。例如,对于 int matrix[3][10];
,表达式 matrix[1][5]
访问的是特定元素。
实际上,下标是一种伪装的间接寻址表达式。以 matrix
为例, matrix
类型是“指向包含十个整数的数组的指针”, matrix + 1
同样是“指向包含十个整数的数组的指针”,但它指向矩阵的不同行,因为值 1 会按包含十个整数的数组的大小进行缩放。表达式 *(matrix + 1)
识别出一个特定的包含十个整数的数组,其类型是“指向整数的指针”。进一步, *(matrix + 1) + 5
指向该数组中偏移 5 个整数的位置,而 *( *(matrix + 1) + 5 )
则访