#include <iostream>
const double * f1(const double ar[], int n);
const double * f2(const double [], int);
const double * f3(const double *, int);
int main()
{
using namespace std;
double av[3] = {1112.3, 1542.6, 2227.9};
const double* (*p1)(const double *, int) = f1;
auto p2 = f2;
cout << "Using pointers to functions:\n";
cout << "Address Value\n";
cout << (*p1)(av, 3) << ": " << *(*p1)(av, 3) << endl;
cout << p2(av, 3) << ": " << *p2(av, 3) << endl;
const double* (*pa[3])(const double*, int) = {f1, f2, f3};
auto pb = pa;
return 0;
}
const double * f1(const double * ar, int n)
{
return ar;
}
const double * f2(const double ar[], int n)
{
return ar+1;
}
const double * f3(const double ar[], int n)
{
return ar+2;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKCmNvbnN0IGRvdWJsZSAqIGYxKGNvbnN0IGRvdWJsZSBhcltdLCBpbnQgbik7CmNvbnN0IGRvdWJsZSAqIGYyKGNvbnN0IGRvdWJsZSBbXSwgaW50KTsKY29uc3QgZG91YmxlICogZjMoY29uc3QgZG91YmxlICosIGludCk7CgppbnQgbWFpbigpCnsKICAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CgogICAgZG91YmxlIGF2WzNdID0gezExMTIuMywgMTU0Mi42LCAyMjI3Ljl9OwogICAgY29uc3QgZG91YmxlKiAoKnAxKShjb25zdCBkb3VibGUgKiwgaW50KSA9IGYxOwogICAgYXV0byBwMiA9IGYyOwoKICAgIGNvdXQgPDwgIlVzaW5nIHBvaW50ZXJzIHRvIGZ1bmN0aW9uczpcbiI7CiAgICBjb3V0IDw8ICJBZGRyZXNzIFZhbHVlXG4iOwogICAgY291dCA8PCAoKnAxKShhdiwgMykgPDwgIjogIiA8PCAqKCpwMSkoYXYsIDMpIDw8IGVuZGw7CiAgICBjb3V0IDw8IHAyKGF2LCAzKSA8PCAiOiAiIDw8ICpwMihhdiwgMykgPDwgZW5kbDsKICAgIGNvbnN0IGRvdWJsZSogKCpwYVszXSkoY29uc3QgZG91YmxlKiwgaW50KSA9IHtmMSwgZjIsIGYzfTsKICAgIGF1dG8gcGIgPSBwYTsKCiAgICByZXR1cm4gMDsKfQoKY29uc3QgZG91YmxlICogZjEoY29uc3QgZG91YmxlICogYXIsIGludCBuKQp7CiAgICByZXR1cm4gYXI7Cn0KY29uc3QgZG91YmxlICogZjIoY29uc3QgZG91YmxlIGFyW10sIGludCBuKQp7CiAgICByZXR1cm4gYXIrMTsKfQpjb25zdCBkb3VibGUgKiBmMyhjb25zdCBkb3VibGUgYXJbXSwgaW50IG4pCnsKICAgIHJldHVybiBhcisyOwp9