Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

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



Каждая функция характеризуется типом возвращаемого значения, именем и списком типов ее параметров. Если имя функции использовать без последующих скобок и параметров, то он будет выступать в качестве указателя на эту функцию, и его значением будет выступать адрес размещения функции в памяти. Это значение можно будет присвоить другому указателю. Тогда этот новый указатель можно будет использовать для вызова функции. Указатель на функцию определяется следующим образом:

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

Примеры:

1. int f1(char c){.... }//определение функции

int(*ptrf1)(char);//определение указателя на функцию f1

2. char*f2(int k,char c){....}//определение функции

char*ptrf2(int,char);//определение указателя

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

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

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

Пример.

#include <iostream.h>

void f1()

{cout<<”\nfunction f1”;}

void f2()

{cout<<”\nfunction f2”;}

void main()

{

void(*ptr)();//указатель на функцию

ptr=f2;//указателю присваивается адрес функции f2

(*ptr)();//вызов функции f2

ptr=f1;//указателю присваивается адрес функции f1

(*ptr)();//вызов функции f1с помощью указателя

}

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

void (*ptr)()=f1;

Указатели н функции могут быть объединены в массивы. Например, float(*ptrMas[4])(char) – описание массива, который содержит 4 указателя на функции. Каждая функция имеет параметр типа char и возвращает значение типа float. Обратиться к такой функции можно следующим образом:

float a=(*ptrMas[1])(‘f’);//обращение ко второй функции

Пример.

#include <iostream.h>

#include <stdlib.h>





Дата публикования: 2014-11-04; Прочитано: 255 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.005 с)...