Беспорядочная интерпретация указателя на функцию

Я случайно наткнулся на следующий указатель на функцию.

char (*(*x())[])();

Он выглядит как массив указателя на функцию в следующем формате, но я не вижу, что именно f -> (* x ()) средства. Как интерпретировать этот беспорядочный указатель на функцию?

char (*f[])();

ДОБАВЛЕНО

С помощью Джона Боде я сделал следующий пример.

#include 

char foo()    { return 'a'; }
char bar()    { return 'b'; }
char blurga() { return 'c'; }
char bletch() { return 'd'; }

char (*gfunclist[])() = {foo, bar, blurga, bletch};

char (*(*x())[])()
{
  static char (*funclist[4])() = {foo, bar, blurga, bletch};
  return &funclist;
}

int main() 
{
  printf("%c\n",gfunclist[0]());

  char (*(*fs)[4])();
  fs = x();
  printf("%c\n",(*fs)[1]()); 
}

Я смог получить ожидаемый результат.

smcho@prosseek temp2> ./a.out 
a
b

И, вы можете найти лучшую реализацию здесь .

7
задан Community 23 May 2017 в 11:56
поделиться