我有这种类型的定义
int (*af[10])(int , *a[10][10])(int,int)
我必须“翻译”它就像“这是指向函数数组大小为10的指针”等等。我认为这里有一个错误,因为*a[10][10]
没有定义类型。它是否正确?或者这条线可以正确翻译?
提前致谢
最后我发现正确的定义应该是这样的
int (*af[10])(int ,int (*a[10][10])(int,int))
这是正确的,也是有道理的。
答案 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])
其余部分都是垃圾。