АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

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

Читайте также:
  1. II. Функции тахографа и требования к его конструкции
  2. MS Excel.Текстовые функции, примеры использования текстовых функций.
  3. SCADA-система: назначение и функции
  4. V2: Электронные таблицы. Встроенные функции.
  5. VI. Сигнальные указатели и знаки на транспорте
  6. А) Рабочее место б) Функции
  7. Автоматическая настройка УОЗ на атмосферном двигателе с помощью функции замеров ускорения.
  8. Активный и пассивный словарь. Историзмы и архаизмы. Типы архаизмов. Стилистические функции.
  9. Анатомия пищев.канала: отделы,сфинктеры и клапаны,их положение,строение и значение для пищев.функции.
  10. Антонимы. Типы антонимов. Антонимия и полисемия. Стилистические функции антонимов (антитеза, антифразис, амфитеза, астеизм, оксюморон и т.д.). Энантиосемия. Словари антонимов.
  11. Банки и банковская система. Центральный банк, его функции
  12. Биогенные амины,происхождение,функции

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

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

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

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

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

 

· при определении спецификации параметров достаточно перечислить через запятую типы параметров, имена параметров можно опустить;

· тип_функции – это тип результата, возвращаемого функцией;

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

· инициализация не обязательна, но при ее наличии тип результата, и сигнатура параметров инициирующей функции должна полностью соответствовать указателю.

Например:

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

int (*ptr) (char*);

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

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

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

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

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

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

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

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

Рассмотрим пример использования указателя на функции:

 

//определение функции вычисления длины строки-

// количества символов в строке до байтового нуля

int len (char * e)

{ int m=0;

while(e[m++]);

return m-1;

}


1 | 2 | 3 | 4 | 5 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.003 сек.)