可能是重复问题:
如何理解复杂的函数声明?
考虑以下代码:
char (*(*x())[5])()
我该如何分析这个表达式?
我认为这是一个函数,返回大小为5的数组,其成员是不接受输入且返回字符的函数指针。
我的理解正确吗?
可能是重复问题:
如何理解复杂的函数声明?
考虑以下代码:
char (*(*x())[5])()
我该如何分析这个表达式?
我认为这是一个函数,返回大小为5的数组,其成员是不接受输入且返回字符的函数指针。
我的理解正确吗?
搜索“右手法则”。
在您的情况下,应该是:
x : x is a
x() : function
*x() : returning pointer to
(*x())[5] : a 5-element array of
*(*x())[5] : pointer to
(*(*x())[5])() : function
char (*(*x())[5])() : returning char
[5]
,这意味着“有5个元素的数组”。当然,你可以访问第五个元素之外的内容,但这不是声明告诉你的。 - Adrian Shum