Указатели на функции в С++

Указатель в С++ может ссылаться на функцию. Дело в том, что каждая функция хранится в памяти, соответству­ющая область памяти имеет адрес, и этот адрес можно записать в переменную- указатель на функцию. Вызов функции осуществляется через адрес, по которо­му она записана. Этот адрес также называют точкой входа в функцию. Главное правило, которое следует запомнить, состоит в том, что имя функции (без круглых скобок и аргументов) является указателем на функ­цию. Значение этого указателя есть адрес, по которому записана функция. Указатель на функцию объявляется следующим образом. Сначала указывается тип результата, который возвращается соответствующей функцией, затем заключенные в круглые скобки оператор * и имя указателя, а после этих круглых скобок еще одни круглые скобки с перечислением типов аргументов функции. Например, если функцией в качестве значения возвращается значение типа int и у нее два аргумента типа double и char, то указатель р на эту функцию объявляется как int (*р) (double, сhar). В качестве значения такому указателю присваивается имя функции, на которую должен ссылаться указатель. Пример использования указателя на функцию приведен ниже .
#include 
using namespace std;
//Функция возведения в квадрат:
double sqr(double x){
return x*x;}
//Функция возведения в куб:
double cube(double x){
return x*x*x;}
//Функция со вторым аргументом-указателем на функцию:
void myfunc(double x,double (*f)(double)){
cout << f(x) << endl;}
int main(){
double z;
//Указатель на функцию:
double (*p)(double);
cout << "z = ";
cin >> z;
//Указателю присваивается значение:
p=cube;
//Использование указателя и имени функции:
myfunc(z,sqr);
myfunc(z,p);
cout << p(z) << endl;
//Адрес функции:
cout << sqr << endl;
cout << cube << endl;
cout << p << endl;
return 0;
}
Онлайн всего: 1
Гостей: 1
Пользователей: 0

STUDLAB Сообщить про опечатку на сайте