繁体   English   中英

如何在C中以Double指针作为1D数组访问2D数组的元素

[英]How to access the elements of a 2D array represented by a Double pointer as a 1D array in C

可以说我有一个由双指针表示的填充整数2D数组。 我尝试访问像这样的元素(这只是一部分代码):

int **array;

while (i<arraysize) {
    printf("array[%d] = %d", i, array+i);
}

我知道在内存中2D数组基本上存储为1D数组。 如何在不使用嵌套的for循环的情况下打印所有元素?

是的,C 2D数组是数组的数组。 C数组由在内存中连续放置的元素组成,因此2D数组的(数组)成员在内存中是连续的,并且它们自己的元素在它们之间是连续的,因此整体布局与一维数组的布局是一致的。

但是,您呈现的不是2D数组,也不是指向数组的指针,也不以任何方式与之兼容。 您的指针是指向int指针。 这样的指针可能指向int *数组的第一个元素,但是如果程序员在某处直接或间接地执行了不兼容的指针类型之间的转换,则它仅指向2D数组的任何地方。 直接转换应该发出警告,但是间接警告(例如,通过void *中间语言)即使在警告达到11时也可以干净地编译。

C 2D数组的声明具有以下形式:

int array_2d[4][2];

在大多数情况下,此类数组会衰减为此类指针:

int (*array_2d_pointer)[2];

然后,直接回答您的问题,

如何在不使用嵌套的for循环的情况下打印所有元素?

你不能 您的数据不是为此而构造的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM