6

可能重复:
如何理解复杂的函数声明?

考虑:

char (*(*x())[5])()

我如何剖析这个表达?

我认为它是一个返回大小为 5 的数组的函数,其成员是指向不接收输入并返回 char 的函数的指针。

我对吗?

4

2 回答 2

14

搜索“左右规则”

在你的情况下,它应该是:

         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
于 2012-07-10T09:21:31.690 回答
12

这些天我在 Stack Overflow 上看到了很多奇怪的声明。

当我懒惰时,我使用cdecl.org

“将 x 声明为函数返回指向数组 5 的指针的函数返回 char 的指针”

如果没有,则有顺时针螺旋规则<-太棒了

于 2012-07-10T09:20:15.970 回答