char (*(*a)())[];
- это объявление указателя на функцию, которая возвращает указатель на массив неполного типа char[]
.
Обратите внимание, что определение функций в других функциях не стандартная C функция.
Вот демонстрационная программа, которая по крайней мере компилируется.
#include <stdio.h>
char ( *f() )[]
{
static char s[][10] =
{
"Hello",
"World"
};
return s;
}
int main(void)
{
char (*(*a)())[] = f;
char ( *p )[] = a();
puts( *p );
return 0;
}
Вывод программы:
Hello
В этой программе используется приведение типа
char ( *p )[10] = ( char ( * )[10] ) a();
вы можете получить указатель на полный тип массива.