如何读取函数指针?

时间:2015-04-23 09:43:36

标签: c++

如何解释以下c ++声明?

int (*(*x[2])())[3]; 

这来自Type-cppreference处的示例。

2 个答案:

答案 0 :(得分:4)

您可以从x开始推断所有这些细节,并顺时针方向移动括号。您将看到您在页面中看到的描述。

更好地解释为顺时针/螺旋规则http://c-faq.com/decl/spiral.anderson.html

答案 1 :(得分:3)

它是一个包含两个函数指针的数组,这些函数返回指向int[3]类型数组的指针,并且没有参数。

这是一个示范程序

int ( *f() )[3] { return new int[2][3]; }
int ( *g() )[3] { return new int[4][3]; }

int main() 
{
    int (*(*x[2])())[3] = { f, g };

    for ( auto func : x ) delete []func();

    return 0;
}