пользователей: 30398
предметов: 12406
вопросов: 234839
Конспект-online
РЕГИСТРАЦИЯ ЭКСКУРСИЯ

Указатели на функцию. Назначение. Определение указателей на функции. Инициализация. Присваивание значений указателю на функцию. Вызов функции с помощью указателя на функцию. Определение типа указателя на функцию.

Указатели на функции

 

       Имя функции (без параметров и без типа результата) является указателем-константой. Значением этого указателя является адрес размещения операторов функции в оперативной памяти.  Это значение адреса можно присвоить другому указателю-переменной на функцию с тем же типом результата и с той же сигнатурой параметров. И затем этот новый указатель можно применять для вызова функции.

          Введем понятие указателя на функцию. Указатель на функцию – это некоторая переменная, значениями которой будут являться адреса функций,  характеристики которых (тип результата и сигнатура параметров) должны быть указаны в определении указателя.

          Определение указателя  на функцию:

   

< тип_функции> (* имя указателя ) ( спецификация_параметров) =

                                                < имя инициирующей функции>;

 

  • при определении спецификации параметров достаточно перечислить через запятую  типы параметров, имена параметров можно опустить;
  • тип_функции – это тип результата, возвращаемого функцией;
  • тип_функции и спецификация_параметров в определении указателя  должны совпадать  с соответствующими типами и сигнатурами тех функций, адреса которых предполагается присваивать определяемому указателю, например, с помощью оператора присваивания;
  • инициализация указателя не обязательна, но при ее наличии тип результата, и сигнатура параметров инициирующей функции должна полностью соответствовать указателю.

         Например:                            

                                   int * ( * fptr ) ( char *  ,  int );

                                   int (*ptr) (char*);

- определения двух указателей:

         fptr – указатель на функции с параметрами типа указателя на char и типа int, которые  возвращают в качестве результата  указатель на  int;

         ptr - указатель на функции с параметрами типа указателя на char, которые возвращают значение типа   int.

В примере указатели были определены без инициализации, но в дальнейшем этим  указателям на функции – переменным можно присвоить значения указателей – констант, а именно идентификаторы конкретных функций, спецификации которых  должны полностью соответствовать спецификациям в определениях указателей.

Как только некоторому указателю присвоено имя функции, вызов этой функции можно производить как стандартно, используя имя функции, так и используя имя указателя на функцию, который  хранит адрес этой функции.

Эквивалентные вызовы  функции с помощью указателя на эту функцию:

        имя  указателя  (список фактических параметров);

( * имя указателя) (список фактических параметров);

 

Рассмотрим,  как можно использовать указатель на функцию.

          Определить и вызвать функцию вычисления длины строки - количества символов в строке до байтового нуля, строка – параметр функции. Вызов функции производить, используя указатель на функцию.

//Определение функции:

 int  len ( char * e)         

    


хиты: 182
рейтинг:+1
Точные науки
информатика
Языки программирования
для добавления комментариев необходимо авторизироваться.
  Copyright © 2013-2024. All Rights Reserved. помощь