В настоящее время я изучаю язык C, и я наткнулся на это утверждение, которое мне кажется сложным и запутанным.
F - это функция, которая ничего не получает и возвращает указатель на массив из трех указателей на функцию, которая возвращает символ и не получает аргументов.
то, что я придумал, это
char (*(*f[3])())[3]
или
char (*(*f())[3])()
пожалуйста, помогите мне, если я прав, или, пожалуйста, предложите мне
и f ничего не получает
@melpomene ВАУ, просто поражен, ты молодец, это как по волшебству, спасибо большое, я рад, что был прав во втором решении
Пустой список аргументов в прототипе функции означает, что нет не принимает аргументов. Это означает, что он принимает неопределенные аргументы. Чтобы указать отсутствие аргументов, вы должны использовать void в качестве списка аргументов.





char (*(*f[3])())[3];
Это массив из 3-х указателей функций (*f[3]), принимающих неопределенные аргументы () и возвращающих указатель на массив из 3-х символов char (*...)[3].
char (*(*f())[3])();
Это функция f(), она возвращает указатель на массив из 3 указателей (* ... )[3] на функции, которые принимают неопределенные аргументы () и возвращают символ char.
Я называю это «неуказанными аргументами», потому что () в списке параметров в объявлении функции позволяет вам вызывать функцию с любым числом и любым типом аргументов, если вы не хотите, чтобы аргументы использовались для (void) в любом C после C89, см. здесь для краткости объяснение.
Так:
F is a function which receives nothing and returns pointer to an array of three pointers to function which returns character and receives no argument.
было бы:
char (*(*f(void))[3])(void);
В любом случае, я говорю, вы прошли!
хорошо объяснил, теперь мне стало понятнее, большое спасибо
В первом
f- это массив.