2014-01-12 195 views
-1

我可以将二维数组看作指针的一维数组,它的第j个索引是指向矩阵的第j行数组的指针吗? 例如,如果我有一个数组[4] [4]。是arr [2]指向第二行数组的指针?二维数组作为指针的一维数组

+0

您是否将一维数组看作指针? – nhgrif

+0

阅读[comp.lang.c常见问题](http://www.c-faq.com)的第6部分。 –

回答

0

不可以。数据在内存中是连续的。

arr [2]将知道单个数组的大小,并将其添加到数组指针的2倍以获得适当的偏移量。

+0

取决于它是如何创建的。如果它是以固定维度静态分配的,那么你说的正确的是数据是连续的,但声明' ** arr'并且稍后分配实际维度是完全有效的。例如,我这样做得到三角形矩阵。 – pjs

0

我可以将二维数组看作指针的一维数组,它的第j个索引是指向矩阵的第j行数组的指针吗?

是。但请记住,数组不是指针。在2D阵列array[M][N]的情况下,为阵列元素array[i](这里的iint)中的每一个分配空格。但是在指针数组*array[M]的情况下,您需要为每个元素array分配空间。

例如,如果我有一个数组[4] [4]。是arr [2]指向第二行数组的指针?

是。 arr2衰退到指向行2的指针