Я случайно наткнулся на следующий указатель на функцию.
char (*(*x())[])();
Он выглядит как массив указателей на функции в следующем формате, но я не вижу, что f -> (* x ()) средства.Как интерпретировать этот беспорядочный указатель на функцию?
char (*f[])();
ДОБАВЛЕНО
С помощью Джона Боде я сделал следующий пример:
#include <stdio.h>
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
И вы можете найти лучшую реализацию здесь .