多维数组(c)
下标表达式还可以有多个下标,如下所示:
expression1 [expression2] [expression3]...
下标表达式从左至右联合。 最左侧的下标表达式, expression1**[expression2],首先计算。 由于添加 expression1 和 expression2 的地址窗体指针表达式;然后 expression3 添加到此指针表达式构成一个新的指针表达式,依此类推,直到最后一个下标表达式添加了。 间接寻址运算符 (***) 为应用的,在最后一 subscripted 计算表达式后,最终,除非指针值解析数组类型 (请参见下面的示例)。
具有多个下标的表达式引用 “多维数组的元素”。多维数组是元素为数组的数组。 例如,一个三维数组的第一个元素与两个维度的数组。
示例
下面的示例中,名为 prop 的数组声明包含三个元素,每个都是 4 x 6 的数组的 int 值。
int prop[3][4][6];
int i, *ip, (*ipp)[6];
为 prop 数组的引用如下所示:
i = prop[0][0][1];
上面的示例演示如何引用 prop的第二个单独 int 元素。 行存储数组,因此,最后一个下标快速更改;该表达式 prop[0][0][2] 引用数组中的下一个 (第三个) 元素,依此类推。
i = prop[2][1][3];
此语句是更复杂的引用。 prop的某个元素。 该计算表达式如下所示:
第一个下标, 2,乘以 a 的大小为 4 x 6 int 数组并将其添加到指针值 prop。 该结果指向 4 x 6 的数组的第三 prop。
第二个下标, 1,乘以 6 元素 int 数组的大小并添加到 prop[2]表示的地址。
6 元素数组的每个元素是 int 值,因此,最终下标, 3,乘以 int 的大小,即添加到 prop[2][1]之前。 结果指针解决 6 元素数组的第四个元素。
间接运算符应用于指针值。 结果为 int 元素在该地址。
这些下两个示例演示用例间接寻址运算符的位置不适用。
ip = prop[2][1];
ipp = prop[2];
在第一个语句,表达式 prop[2][1] 有效的对三维数组 prop;它是指一个 6 元素数组 (声明上面)。 因为指针值解析数组,间接寻址运算符不适用。
同样,表达式 prop[2] 的结果在第二个语句 ipp = prop[2]; 的解析指针的值的二维数组。