POINTERS TO FUNCTIONS
#include "stdio.h"
int add(int a, int b)
{
return (a+b);
}
int sub(int a, int b)
{
return (a-b);
}
int calcu(int a, int b, int (*f)(int , int))
{
int result;
result=(*f)(a,b);
return result;
}
int main()
{
int m,n;
m=calcu(7,5,add);
n=calcu(10,2,sub);
int (*minus)(int,int)=sub;
int p;
p=calcu(20,6,minus);
printf("m=%d\nn=%d\np=%d\n",m,n,p);
return 0;
}
/**
OCS101:~/cpl # gcc pointerToFuntions.c
OCS101:~/cpl # ./a.out
m=12
n=8
p=14
*/
C++ allows operations with pointers to functions. The typical use of this is for passing a function as an argument to another function, since these cannot be passed dereferenced. In order to declare a pointer to a function we have to declare it like the
prototype of the function except that the name of the function is enclosed between parentheses
() and an asterisk (*) is inserted before the name:
|
|
8 |
In the example, minus is a pointer to a function that has two parameters of type
int. It is immediately assigned to point to the function subtraction, all in a single line:
|
|