C中2D数组声明的数组中的歧义

时间:2019-03-11 06:32:06

标签: c++ c

我正在查看遇到此行代码的代码。 如果我认为这段代码是二维数组的数组(我正在传递2d数组的数组),然后修改了参数,则我将无法理解在函数中声明为unsigned char (*data)[int][int]的参数代码为unsigned char *data[int][int],这样应该行不通吗?。

1 个答案:

答案 0 :(得分:6)

不,它不起作用。因为这些声明声明了不兼容的不同类型。

unsigned char (*data)[2][2]:将数据声明为指向未签名字符2的数组2的指针(来自https://cdecl.org/

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

unsigned char *data[2][2]:将数据声明为指向未签名字符的指针2的数组2的数组

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