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

yak*_*uki 3 c arrays pointers function definition

我有这种类型的定义

int (*af[10])(int , *a[10][10])(int,int)
Run Code Online (Sandbox Code Playgroud)

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

提前致谢


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

int (*af[10])(int ,int (*a[10][10])(int,int))
Run Code Online (Sandbox Code Playgroud)

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

Fil*_*ves 5

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

也许你的意思是:

int (*(*af[10])(int , int *a[10][10]))(int,int)
Run Code Online (Sandbox Code Playgroud)

这将产生af一个10个指向函数接收int的数组和一个包含10个指针的10个数组的数组int,并返回一个指向函数的指针,接收两个ints并返回一个int.

编辑:

看起来正确的行是:

int (*af[10])(int ,int (*a[10][10])(int,int))
Run Code Online (Sandbox Code Playgroud)

这使得af10个指针的数组能够接收2个参数并返回int.第一个参数是a int,第二个参数是多维数组(10x10)或指向函数接收2 ints并返回a的指针int.

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