Хелпикс

Главная

Контакты

Случайная статья





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



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

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

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

Но также указатель на функцию мы можем определять в виде отдельной переменной с помощью следующего синтаксиса:

тип (*имя_указателя) (параметры);

 

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

имя_указателя представляет произвольно выбранный идентификатор в соответствии с правилами о наименовании переменных.

И параметры определяют тип и название параметров через запятую при их наличии.

Например, определим указатель на функцию:

void (*message) ();>

 

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

Используем указатель на функцию:

#include <iostream>

 

void hello();

void goodbye();

 

int main()

{

void (*message)();

message=hello;

message();

message = goodbye;

message();

return 0;

}

void hello()

{

std::cout << "Hello, World" << std::endl;

}

void goodbye()

{

std::cout << "Good Bye, World" << std::endl;

}

Указателю на функцию можно присвоить функцию, которая соответствует указателю по возвращаемому типу и спецификации параметров:

message=hello;

То есть в данном случае указатель message теперь хранит адрес функции hello. И посредством обращения к указателю мы можем вызвать эту функцию:

message();

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

(*message)();:



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.