Что скажете насчет такого синтаксиса? (перевел Сишные объявления)
/*
str - массив из 10 указателей на char
*/
Си - char *str[10]
___ - str: [10]*char
/*
fp - указатель на функцию, которая получает int и указатель на float и возвращает указатель на char
*/
Си - char *(*fp)(int, float*)
___ - fp: *(int, *float): *char
/*
signal - функция, которая принимает int и fp(указатель на функцию, которая принимает int и возвращает void) и возвращает указатель на функцию, которая принимает int и возвращает void
*/
Си - void (*signal(int, void (*fp)(int)))(int)
___ - signal(int, fp: *(int): void): *(int): void
/*
z - массив из 5 указателей на функцию, которая принимает массив int и указатель на char и возвращает указатель на функцию, которая принимает int и возвращает int
*/
Си - int (*(*z[5])(int[], char*))(int)
___ - z: [5]*([]int, *char): *(int): int
мне обьявления размерности перед типом жутко не нравятся, оно какое-то неочевидное. Ну т.е. [10]*char