|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Определение типа указателя на функцию
Для удобства последующих применений целесообразно вводить имя типа указателя на функцию с помощью спецификатора typedef. Описание типа указателя на функцию: typedef <тип_функции> (* имя типа указателя) (спецификация параметров); Примеры объявления типов указателей на функции:
typedef int (* ptr) (int); ptr -тип указателя на функцию, возвращающую результат типа int, имеющуюпараметр типа int; typedef void (* ptf) (ptr, int, char*); ptf -тип указателя на функцию, невозвращающую результат, имеющую трипараметра - указатель типа ptr, значение типа int и указатель типа char*. После определения типов можно объявлять переменные данных типов - указатели и массивы указателей описанных типов:
ptr A; // объявлен указатель на функцию: int имя (int); ptf B[4]; //определен массив указателей на функции void имя (ptr,int, char*) Массивы указателей на функции удобно использовать при разработке программ, управление которыми выполняется с помощью меню реализующих вызов различных функций обработки данных по желанию будущего пользователя в интерактивном режиме. Рассмотрим алгоритм простейшего меню: · все варианты обработки данных определяются в виде функций act1() – act4(); · объявляетсятип menu -тип указателя на такие функции; · объявляется массив act из четырех указателей на функции, инициированный именами функций act1() – act4(); Интерактивная часть: · на экран выводятся строки описания вариантов обработки данных и соответствующие вариантам целочисленные номера; · пользователю предлагается выбрать из меню нужный ему пункт и ввести значение номера (соответствующее требуемому варианту обработки), ожидается ответ; · пользователь вводит значение номера с клавиатуры; · по номеру пункта, как по индексу, из массива указателей выбирается соответствующий элемент, инициированный адресом нужной функции обработки; производится вызов функции. Использование массива указателей существенно упрощает программы, так как в данном случае отпадает необходимость использовать оператор switch – для выбора варианта. Ниже приведена программа: # include < iostream.h> # include < stdlib.h> // определение функций обработки данных: void act1 () { cout << “ чтение файла” } void act2 () { cout << “ модификация файла” } void act3 () { cout << “ дополнение файла” } void act4() { cout << “ удаление записей файла” } typedef void (* menu) (); // дано описание типа указателя на функции menu act [4] = { act1, act2, act3, act 4}; // определен массив указателей Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.005 сек.) |