Pointer to function
src/cpp/arrays-pointers/03-pointer-to-function.cpp
#include <iostream>
using namespace std;
int square(int x)
{
return (x * x);
}
int cube(int x)
{
return (x * x * x);
}
// int (*f)(int x) : is a pointer to a function that takes int input and returns
// int as well
// double (*f)() : takes no input, returns double
int sum(int (*f)(int x), int lim)
{
int total = 0;
for (int i = 1; i <= lim; i++)
{
total += (*f)(i); // dereferencing is optional
// total += f(i);
}
return total;
}
int sum_alt(int f(int x), int lim)
{
int total = 0;
for (int i = 1; i <= lim; i++)
{
total += f(i);
}
return total;
}
int main()
{
cout << "square[0, 10] = " << sum(square, 10) << endl;
cout << "cube[0, 10] = " << sum(cube, 10) << endl;
cout << "square_alt[0, 10] = " << sum_alt(square, 10) << endl;
cout << "cube_alt[0, 10] = " << sum_alt(cube, 10) << endl;
return 0;
}