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

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

Читайте также:
  1. I. Определение жестокого обращения с детьми.
  2. I. ОПРЕДЕЛЕНИЕ ПРЕДМЕТА МАТЕМАТИКИ, СВЯЗЬ С ДРУГИМИ НАУКАМИ И ТЕХНИКОЙ
  3. T.5 Определение нормальной скорости распространения пламени и термодинамических параметров
  4. T.5. Определение нормальной скорости распространения пламени и термодинамических параметров.
  5. V. Определение классов
  6. V. Определение основных параметров шахтного поля
  7. V.2 Определение величин удельных ЭДС.
  8. VI. ОПРЕДЕЛЕНИЕ РЕЗУЛЬТАТОВ ПЕРВЕНСТВА
  9. VI. Определение учебной нагрузки педагогических работников, отнесенных к профессорско-преподавательскому составу, и основания ее изменения
  10. VII. Определение установившихся скоростей поезда рассчитанной массы на прямом горизонтальном участке пути при работе электровоза на ходовых позициях.
  11. XI. ОПРЕДЕЛЕНИЕ ПОБЕДИТЕЛЕЙ И ПРИЗЕРОВ
  12. А Определение годовых амортизационных отчислений различными способами

 

Для удобства последующих применений целесообразно вводить имя типа указателя на функцию с помощью спецификатора 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}; // определен массив указателей


1 | 2 | 3 | 4 | 5 |

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



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