2D阵列声明阵列中的模棱两可

Ambiguity in array of 2d arrays declaration in C

本文关键字:阵列 模棱两可 声明 2D      更新时间:2023-10-16

我正在浏览遇到此代码行的代码。我无法理解unsigned char (*data)[int][int]在函数中声明为参数,如果我将此代码视为二维数组的数组(我正在通过2D数组的数组),然后如果我将代码修改为unsigned char *data[int][int],则这不起作用?

不,它行不通。因为这些声明声明了不同类型的不同类型。

unsigned char (*data)[2][2]:将数据声明为 dray 2的指针 2的2个数组2的char char(来自https://cdecl.org/)

+---+      +---+---+
|  -+----->|   |   |
+---+      +---+---+
data       |   |   |
           +---+---+
           unsigned char [2][2]

unsigned char *data[2][2]:将数据声明为 array 2 of Pointer

                   +---+---+
 unsigned char <---+-  |  -+---> unsigned char
                   +---+---+
 unsigned char <---+-  |  -+---> unsigned char
                   +---+---+
                     data