【发布时间】:2014-05-13 09:58:20
【问题描述】:
我有这种定义
int (*af[10])(int , *a[10][10])(int,int)
我不得不“翻译”它,就像“这是指向 10 的函数数组大小的指针”等等。我认为这里有一个错误,因为 *a[10][10] 没有定义类型。它是否正确?或者这行能不能翻译正确?
提前致谢
最后发现正确的定义应该是这样的
int (*af[10])(int ,int (*a[10][10])(int,int))
这是正确且有意义的。
【问题讨论】:
-
这是一个语法错误,因为?缺少第二个数组的定义类型或?
-
看起来像一个指向返回函数指针的函数的指针。读起来像“如果我取 af,给它一个从 0 到 9 的索引,取消引用它,然后用两个参数调用结果,其中一个是 int,另一个可能拼写错误,然后用两个 int 参数调用结果,然后我得到一个 int"。
-
@yakamuki
a的类型不完整。 -
对于类似的问题,查看cdecl.org 可能会有所帮助。
-
@glglgl cdecl.org 认为函数可以返回一个函数。例如,它会将
int (*af[10])(int *[10][10])(int,int);报告为类型正确。这是误导。在这种情况下,正确的编译器更加可靠。
标签: c arrays function pointers definition