多维数组(c)

下标表达式还可以有多个下标,如下所示:

expression1 [expression2] [expression3]...

下标表达式从左至右联合。 最左侧的下标表达式, expression1**[expression2],首先计算。 由于添加 expression1expression2 的地址窗体指针表达式;然后 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的某个元素。 该计算表达式如下所示:

  1. 第一个下标, 2,乘以 a 的大小为 4 x 6 int 数组并将其添加到指针值 prop。 该结果指向 4 x 6 的数组的第三 prop。

  2. 第二个下标, 1,乘以 6 元素 int 数组的大小并添加到 prop[2]表示的地址。

  3. 6 元素数组的每个元素是 int 值,因此,最终下标, 3,乘以 int 的大小,即添加到 prop[2][1]之前。 结果指针解决 6 元素数组的第四个元素。

  4. 间接运算符应用于指针值。 结果为 int 元素在该地址。

这些下两个示例演示用例间接寻址运算符的位置不适用。

ip = prop[2][1];

ipp = prop[2];

在第一个语句,表达式 prop[2][1] 有效的对三维数组 prop;它是指一个 6 元素数组 (声明上面)。 因为指针值解析数组,间接寻址运算符不适用。

同样,表达式 prop[2] 的结果在第二个语句 ipp = prop[2]; 的解析指针的值的二维数组。

请参见

参考

编写在下方的运算符:[]