【发布时间】:2016-02-05 21:02:22
【问题描述】:
据我了解,分配的内存块是连续的,因此数组中的地址是数组数据大小的倍数(在某些系统上为 int = 4,等等)
我还看到对于数组 A 和索引 i,C 中的 A[i] == *(A+i)。
二维数组就像一个数组数组,所以我想知道如果我疯得不使用[] 运算符,如何确定N 维数组的表达式。
如果数组是用指针创建的,那不是需要知道层的长度吗?
【问题讨论】:
-
当你说“二维数组”时,你的意思是像
int array[X][Y]这样的数组吗?一个指针数组,比如int *array[X]?指向数组的指针,例如int (*array)[X]?还是指向指针的指针,例如int **array?虽然所有这些都可以通过简单的索引来访问,但它们在内存中的布局是不同的,因此如果您不想使用数组索引,则需要为每个表达式使用不同的表达式。 -
@JoachimPileborg 我的意思是像 int array[x][y]、int array[x][y][z]、int array[][]...[] 这样的数组。但现在想来,我都很好奇,因为我不知道他们的布局不同。
标签: c arrays pointers multidimensional-array operators