如何读取函数指针? 如何解释下面的C++声明?< /P> int (*(*x[2])())[3];

如何读取函数指针? 如何解释下面的C++声明?< /P> int (*(*x[2])())[3];,c++,C++,这是目前的示例 您可以从x开始,顺时针移动括号,推断出所有这些细节。您将看到页面中的描述 这里更好地解释为顺时针/螺旋规则:它是一个由两个指向函数的指针组成的数组,这些函数返回指向类型为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,

这是目前的示例

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


这里更好地解释为顺时针/螺旋规则:

它是一个由两个指向函数的指针组成的数组,这些函数返回指向类型为
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;
}

是一个很有用的工具,如果你在类型方面遇到困难的话。它是一个指向返回的函数的指针数组。。。必须替换为一个包含两个指针的数组,指向返回正确的函数?@Abraham没有任何必要明确说明数组中有多少元素。:)记录是自描述性的。仅针对像我这样的傻瓜:)这是一个很好的答案,但并不能真正回答问题。