簡體   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