#include <iostream>
using namespace std;
int fn1(int x)
{
cout << "This is fn1. Passed a value of " << x << "\n";
}
int fn2(int x)
{
cout << "This is fn2. Adding 1 to x = " << x+1 << "\n";
}
using namespace std;
typedef int (*IntFn)(int);
int main() {
IntFn fn; // declare function pointer
fn = &fn1;
fn(5); // call fn1 via pointer
fn = &fn2;
fn(5); // call fn2 via pointer
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCBmbjEoaW50IHgpCnsKCWNvdXQgPDwgIlRoaXMgaXMgZm4xLiAgUGFzc2VkIGEgdmFsdWUgb2YgIiA8PCB4IDw8ICJcbiI7Cn0KCmludCBmbjIoaW50IHgpCnsKCWNvdXQgPDwgIlRoaXMgaXMgZm4yLiAgQWRkaW5nIDEgdG8geCA9ICIgPDwgeCsxIDw8ICJcbiI7Cn0KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp0eXBlZGVmIGludCAoKkludEZuKShpbnQpOwoKaW50IG1haW4oKSB7CglJbnRGbiBmbjsgIC8vIGRlY2xhcmUgZnVuY3Rpb24gcG9pbnRlcgoJZm4gPSAmZm4xOwoJZm4oNSk7ICAgLy8gY2FsbCBmbjEgdmlhIHBvaW50ZXIKCWZuID0gJmZuMjsKCWZuKDUpOyAgLy8gY2FsbCBmbjIgdmlhIHBvaW50ZXIKfQ==