Школа Назначение понимания определения конкретного указателя C - PullRequest
0 голосов
/ 04 мая 2018

Во время вводного курса по Си (в Инженерном университете) нас попросили идентифицировать декларацию с указателями вдоль строк int (*(*f[5])(void))[10];.

мое текущее понимание объявления было бы "массивом, содержащим 10 указателей на функции, каждый из которых возвращает указатель int и не принимает аргументов".

Может ли кто-нибудь подтвердить мое понимание декларации и сказать, будут ли такие определения полезны на практике?

Ответы [ 2 ]

0 голосов
/ 04 мая 2018

int (*(*f[5])(void))[10] объявляет (*(*f[5])(void))[10] как int.

Что означает (*(*f[5])(void)) - это массив из 10 int.

Что означает (*f[5])(void) - указатель на массив из 10 int.

Это означает, что (*f[5]) - это функция, принимающая void и возвращающая указатель на массив 10 int.

Что означает f[5] - указатель на функцию, принимающую void и возвращающую указатель на массив 10 int.

Это означает, что f - это массив из 5 указателей на функции, принимающий void и возвращающий указатель на массив 10 int.

0 голосов
/ 04 мая 2018

это может потребоваться позже, но

int (*(*f[5])(void))[10]

массив, содержащий 10 указателей на функции -> True каждый и не принимая никаких аргументов -> Верно также

возвращает указатель на int -> Возможно, это правда, но я бы поставил * вне скобок

*(*f[5])(void)

Кроме того, я не уверен, почему в нем есть [5]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...