2

我正在努力解决这个问题,但由于我是 CI 新手,所以无法想象它在 3D 阵列处或之后会如何。我知道我们必须提到静态 1D 阵列的大小,但在 2D 阵列中,第一个维度在声明中是可选的,如下所示:

int arr[][2]={{2,3},{4,8},{5,3}};

但是 X 维数组呢?以下是否可以,或者只是第一个维度是可选的,需要提及吗?

 int arr[][][2]= blah blah;
 int arr[][][][8]= blah blah;

我知道在上述二维数组的情况下,第二维是使用 执行指针运算所必需的arr,但我无法想象对于维数大于 2 的数组会如何或不会如何。

4

1 回答 1

4

只有一项可以留空。为了知道如何获得一个特定的值,它需要能够计算除第一个值之外的所有内容的偏移量。

例如:

字符数组[][3]

系统知道要走三个字节(假设是 1 字节字符)* 数组索引的第一部分 + 第二部分的每个部分都加 1。

字符数组[][2][3]

系统知道要走 6 字节 (2*3) 字节 * 数组索引的第一部分 + 3 * 第二部分 + 1 * 最后一部分。

如果 2 不存在,您将无法根据第一个索引的值计算偏移量。

于 2013-05-13T08:37:40.717 回答