In C, while calling a function to carry out a task, usually the data for the function is sent as arguments. But it is also possible to send a function itself as an argument. The following program defines two functions add( ) and sub( ) which are passed as an argument to another function.
//C program to pass function as an argument
#include<stdio.h>
int add(int,int);
int sub(int,int);
void f_calling_f(int,int,int (*)(int,int));
void main ()
{
clrscr();
printf("Passing function to function\n");
f_calling_f(10,20,add);
f_calling_f(10,20,sub);
getch();
}
void f_calling_f(int a,int b,int (*f)(int,int))
{
f(a,b);
}
int add(int a,int b)
{
printf("\nThe result of addition of %d and %d is %d\t",a,b,a+b);
}
int sub(int a,int b)
{
printf("\nThe result of subtraction of %d and %d is %d\t",a,b,a-b);
}
/*
OUTPUT
------------
Passing function to function
The result of addition of 10 and 20 is 30
The result of subtraction of 10 and 20 is -10
*/