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)
这是正确的,也是有道理的.
这不是有效的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以确认您的猜测.