指向C中的函数数组的指针

时间:2014-04-02 08:46:25

标签: c arrays function pointers definition

我有这种类型的定义

int (*af[10])(int , *a[10][10])(int,int)

我必须“翻译”它就像“这是指向函数数组大小为10的指针”等等。我认为这里有一个错误,因为*a[10][10]没有定义类型。它是否正确?或者这条线可以正确翻译?

提前致谢


最后我发现正确的定义应该是这样的

int (*af[10])(int ,int (*a[10][10])(int,int))

这是正确的,也是有道理的。

2 个答案:

答案 0 :(得分:5)

这不是有效的C声明。首先,缺少a的类型。但更糟糕的是,它好像(*af[10])(int , *a[10][10])正在返回一个函数(这是不可能的)。

也许你的意思是:

int (*(*af[10])(int , int *a[10][10]))(int,int)

这会使af一个包含10个指针的数组,用于接收int和一个包含10个指向int的10个数组的数组,并返回指向函数接收两个int的指针1}}并返回int

修改

看起来正确的行是:

int (*af[10])(int ,int (*a[10][10])(int,int))

这使得af一个包含10个指针的数组,用于接收2个参数并返回int。第一个参数是int,第二个参数是多维数组(10x10)或指向函数接收2 int并返回int的指针。

将来,您可能需要查看cdecl.org以确认您的猜测。

答案 1 :(得分:0)

我认为af实际上是一个数组:

af[10]

数组包含指针:

*af[10]

这些是函数的指针:

int (*af[10])(...)

参数列表有一个语法错误,可能是int错误之后的逗号:

int (*af[10])(int *a[10][10])

其余部分都是垃圾。