Что означает это выражение C?
Я наткнулся на эту строку:
void (*(*x)(void (*[10])(int *)))(int *)
Кто-нибудь может сказать мне, что это такое?
Ответы
Ответ 1
Чтобы разбить это на себя, начинайте с самых внутренних круглых скобок и выполняйте свой путь.
-
(*[10])
< ---- Массив из 10 указателей
-
(*[10])(int *)
< ------ Массив из 10 указателей на функции, которые имеют указатель на int
в качестве аргумента
-
(void (*[10])(int *))
< ------ Массив из 10 указателей на функции, который имеет указатель на int
в качестве своего аргумента и возвращает void
-
(*x)(void (*[10])(int *))
< ------- x
является указателем на функцию, которая имеет в качестве аргумента (массив из 10 указателей на функции, который имеет указатель на int в качестве аргумента и возвращает void
)
.....
Я остановился частично, но надеюсь, что это поможет.
Ответ 2
cdecl очень полезен для такого рода вещей. В нем говорится:
объявить x как указатель на функцию (массив 10 указателя на функцию (указатель на int), возвращающий void), возвращающий указатель на функцию (указатель на int), возвращающий void
Ответ 3
Здесь вы можете найти объяснения:
Ответ 4
http://cdecl.ridiculousfish.com/?q=void+%28*%28*x%29%28void+%28*%5B10%5D % 29% 28int +% 29% 29% 29% 28int + 29%
Ответ 5
Указатель на функцию, которая имеет массив из 10 указателей на функции который имеет аргумент int * и возвращаемый тип void как аргумент, и возвращает указатель на функцию, которая имеет аргумент int * и return type void.
Источник