我正试图让我的头围绕这个,但因为我是新的C我只是无法想象它将如何在或超越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的数组,事情将如何解决。
只能留一个空格。为了知道如何得到一个特定的值,它需要能够计算除第一个值之外的所有值的偏移量。
例如:char[]数组[3]
系统知道3个字节(假设1字节字符)*数组的第一部分索引+ 1为第二部分的每一部分。
char数组[][2][3]
系统知道6字节(2*3)字节*数组索引的第一部分+ 3 *第二部分+ 1 *最后一部分。
如果2不存在,你无法计算出基于第一个索引值的偏移距离。