Что означает
int *(cmp)(char*, char*);
?В чем разница между
char* ptr1;
иchar *ptr2;
Интерпретация объявления переменной-указателя
Ответы (1)
это
int *(cmp)(char*, char*);
— это объявление функции с типом возвращаемого значения int *
и двумя параметрами типа char *
.
Вы можете заключить декларатор в круглые скобки. Таким образом, приведенное выше объявление функции также можно переписать как
int * ( (cmp)(char*, char*) );
Оба объявления эквивалентны
int * cmp(char*, char*);
Объявление указателя на такую функцию будет выглядеть так
int * ( *p_cmp )(char*, char*) = cmp;
Между этими декларациями нет разницы
char* ptr1;
char *ptr1;
char * ptr1;
person
Vlad from Moscow
schedule
09.03.2020
int *(cmp)(char*, char*);
— это простоint *cmp(char*, char*);
:cmp
— это функция, которая принимает два аргумента, оба типаchar *
, и возвращает указатель наint
. 2. Без разницы. Это вопрос выбора. - person haccks   schedule 09.03.2020char *ptr2;
, потому что вchar* ptr2, ptr3;
ptr3
не указатель, аchar ptr3;
- person Weather Vane   schedule 09.03.2020cmp
(сравнить?), я склонен думать, что подпись на самом делеint (*cmp)(char*, char*);
, то есть указатель на функцию, которая возвращаетint
в качестве параметра для функции сравнения в стилеqsort
. (как объяснено здесь< /а>). Этот поток может быть полезен, если вы хотите узнать, как написать такую функцию. - person Groo   schedule 09.03.2020int a,b,c = 0;
, когда программист хотел установить все элементы равными нулю, а не толькоc
. - person Lundin   schedule 09.03.2020int (*cmp)(const void*, const void*)
. - person Lundin   schedule 09.03.2020