具有嵌套指针的不兼容指针类型

时间:2018-01-18 03:01:30

标签: c

我有一个参数类型为char *(*)[]的函数,我在char ***类型的对象上调用该函数。为什么GCC警告"不兼容的指针类型"?

编辑:好的,我刚刚意识到[]不应该用于第一个索引以外的任何内容。但我真的不明白char *(*)[]对函数参数的实际意义。

1 个答案:

答案 0 :(得分:1)

它们不兼容。

char *(*p)[]

这意味着p是指向数组的指针 - 该数组包含char*

char* p[2][3];
当传递给函数时,

将衰减为该类型的对象。(这是一个示例,其中一个数组衰减到这个中)。但是在传递数组时,您需要传递除第一个之外的任何其他尺寸信息(发生衰减)。如果在使用传递的对象和索引时未指定此项,则无法正确检索元素。

所以看到这个

是正确的
char *(*p)[3]

在函数签名中。

同样char***与上述情况无关。 char*** - 它将是指向指向char的指针的指针。