что этот тип int * (*) (int *) представляет на языке c? - PullRequest
0 голосов
/ 24 декабря 2018

Кто-нибудь может объяснить точно, что означает этот тип int * (*) (int *) на языке C ?

Спасибо,

Ответы [ 3 ]

0 голосов
/ 24 декабря 2018

Этот

int * (*) (int *); /* not valid expression */

не является допустимым синтаксисом в C.Возможно, вы захотите узнать,

int * (*func) (int *); /* valid : function pointer declaration */

, где func - это указатель функции , может указывать на функцию, которая принимает входной аргумент типа int* и возвращает int*.

0 голосов
/ 25 декабря 2018

Вы должны прочитать о «лево-правом» правиле при чтении С-объявлений.Вот ссылка дает инструкции.Вместо того, чтобы давать ответ, это поможет вам освоить материал для практики самостоятельно.http://cseweb.ucsd.edu/~ricko/rt_lt.rule.html

0 голосов
/ 24 декабря 2018

Если int не определен как макрос, int * (*) (int *) не содержит ни констант, ни идентификаторов, поэтому не может быть выражением.Скорее, это тип .В частности, это тип указателя на функцию, которая принимает один параметр типа int * и возвращает значение типа int *.Например, он совместим с указателем на эту функцию:

int *foo(int *x) {
    return x + 1;
}

Вы можете использовать его в выражении typecast, например, в этом надуманном примере:

int *(*p)() = foo;
int *(*p2)(int *) = (int * (*)(int *)) p;
// here ------------^^^^^^^^^^^^^^^^^^
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...