Q3 - add numbers using function pointer

How to add two numbers using function pointer ?

#include<stdio.h>
 int sum (int n1,int n2);
 int main()
 {
 int num1 = 10;
 int num2 = 20;
 int result;
 int *(*ptr)(int,int);
 ptr = &sum;
 result = (*ptr)(num1,num2);
 printf("Addition : %d",result);
 return(0);
 }
int sum (int n1,int n2)
{
return(n1 + n2);
}

Explanation :

  • Write whole program using normal function call i.e sum(num1,num2);
  • After you write whole code, just erase line in which we have called function and replace that line with following line -

Step 1 : Declaring Pointer Variable

int *(*ptr)(int,int);

means -

Declare pointer variable which is capable of storing
address of function which have integer as return type
and which takes 2 arguments.

Step 2 : Initializing function Pointer

ptr = &sum;
  • Store address of function in Function Pointer

Step 3 : Calling Function

result = (*ptr)(num1,num2);

It will call function sum(num1,num2);
above statement will be elaborated as -

result = (*ptr)(num1,num2);
result = (*&sum)(num1,num2);
result = (*&sum)(num1,num2);
result = (sum)(num1,num2);
result = sum(num1,num2);