Рубрики

Как объявить указатель на функцию?

Итак, мы предполагаем, что вы знаете, что это означает под указателем в C. Итак, как нам создать указатель на целое число в C?
Хм .. это довольно просто ..

int * ptrInteger; /*We have put a * operator between int 
                    and ptrInteger to create a pointer.*/

Здесь ptrInteger — указатель на целое число. Если вы понимаете это, то по логике у нас не должно возникнуть проблем с объявлением указателя на функцию.

Итак, давайте сначала посмотрим .. как мы объявляем функцию? Например,

int foo(int);

Здесь foo — это функция, которая возвращает int и принимает один аргумент типа int. Так что, как будет думать логический парень, поместив оператор * между int и foo (int), нужно создать указатель на функцию, т.е.

int * foo(int);

Но здесь приоритет также играет приоритет оператора Oops..C., Так что в этом случае operator () будет иметь приоритет над оператором *. И приведенное выше объявление будет означать — функцию foo с одним аргументом типа int и возвращаемым значением типа int *, то есть целочисленный указатель. Так что он сделал то, чего мы не хотели делать. 🙁

Поэтому в качестве следующего логического шага мы должны как-то связать оператор * с помощью foo. И для этого мы изменили бы приоритет операторов C по умолчанию, используя оператор ().

int (*foo)(int);

Вот и все. Здесь * оператор с foo, который является именем функции. И он сделал то же самое, что мы хотели сделать.

Так что это было не так сложно, как мы думали раньше!

Рекомендуемые посты:

Как объявить указатель на функцию?

0.00 (0%) 0 votes