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

Указатель на функцию - параметр функции

Читайте также:
  1. II. Функции тахографа и требования к его конструкции
  2. IV. Расчет электрических параметров электрофильтра.
  3. MS Excel.Текстовые функции, примеры использования текстовых функций.
  4. SCADA-система: назначение и функции
  5. T.5 Определение нормальной скорости распространения пламени и термодинамических параметров
  6. T.5. Определение нормальной скорости распространения пламени и термодинамических параметров.
  7. V. Определение основных параметров шахтного поля
  8. V1: Процессы в сложных электрических цепях, цепи с распределенными параметрами
  9. V2: Электронные таблицы. Встроенные функции.
  10. А) Рабочее место б) Функции
  11. Автоматическая настройка УОЗ на атмосферном двигателе с помощью функции замеров ускорения.
  12. АВТОРСКИЙ УКАЗАТЕЛЬ

Указатели на функции удобно использовать в качестве параметров функций, когда объектами обработки функций должны служить другие функции.

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

В определении функции (в теле функции) указатель используется для вызова передаваемой по указателю функции. Формальный параметр – указатель получает значение адреса некоторой функции при вызове функции.

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

Когда же целесообразно использовать указатели на функции как параметры функций?

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

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

Указатели на функции в качестве формальных параметров можно использовать, например,

1) в функциях формирования таблиц результатов, получаемых с помощью различных функций (формул);

2) в функциях вычисления интегралов с различными подынтегральными функциями;

3) в функциях нахождения сумм рядов с различными общими членами и т. д.

 

Пример: определение и использование функции table() для построения таблицы значений различных функций. Функция table() использует в качестве параметров указатели на функции, которые определяют функции для вычислений значений в таблице.

Алгоритм задания:

· определяются три однотипных функции с одним вещественным параметром (a(x), b(x), c(x)) для расчета значений, выводимых в таблицу;

· объявляется тип указателя func на такие функции;

· определяется массив S из трехуказателей на функции инициированный именами функций a, b, c;

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

во-первых, массив ptrA указателей на функции с открытыми границами для передачи функций, вычисляющих значения и целочисленный параметр n для передачи количества указателей в массиве;

и, во-вторых, параметры для аргумента функций – начальное значение - xn, конечное значение - xk и шаг изменения аргумента - dx;

· в главной функциипроизводится вызов функции table() и передаются фактические параметры – инициированный конкретными функциями массив S, количество указателей в массиве 3 и значения аргумента – начальное, конечное и шаг изменения аргумента.

Алгоритм функции table:

· устанавливается начальное значение аргумента функций x=xn;

· пока аргумент функций не достигнет своего конечного значения (x<= xk) выполняется повторяющаяся обработка:при каждом значении аргумента выводится строка значений трех функций, вызовы которых производятся с использованием указателей на функции из массива указателей и затем значение аргумента увеличивается на величину dx.

Текст программы:

 

# include <iostream.h>

float a (float x) { return x*x }

float b (float x) { return (x*x +100) }

float c (float x) { return sqrt (fabs(x)) +x;}

typedef float (* func) (float x);

func S [3] = { a, b, c }

void table (func ptrA [ ], int n, float xn, float xk, float dx)

{ float x = xn;

while (x<= xk)

{ cout <<”\n”;

for (int i=0; i< n; i++)

{ cout. width(10); cout <<(* ptrA[i]) (x); }

x+=dx;

}

}

void main { table (S, 3, 0., 2., 0.1); }


1 | 2 | 3 | 4 | 5 |

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



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