Sunday, November 15, 2009

C Skills : tutor 7 : Function Pointer - Part 2

An Example on Function Pointer


#include "stdio.h"

//Declaration of Function Pointer

int (*funcptr)(int,int); // This is a Global Variable

//Declaration of Functions

int add(int,int);

int sub(int,int);

int mul(int,int);

int (*register_functionpointer(int cmd))(int num1,int num2);//Note this is a function's declaration not a pointer

int main()

{

int(*fptr)(int,int) = NULL;

int cmd,n1,n2,result;

printf("enter the first number\n");

scanf("%d",&n1);

printf("\nenter the second number\n");

scanf("%d",&n2);

printf("\nEnter Command : 1 for Addition,2 for subtraction and 3 for multiplication,4 to exit\n");

scanf("%d",&cmd);

if(cmd == 4)

printf("\nGood Byee....Exit\n");

fptr=register_functionpointer(cmd);

result = fptr(n1,n2);

printf("The result is %d\n",result);

return 0;

}

int (*register_functionpointer(int cmd))(int num1,int num2)

{

switch(cmd)

{

case 1:funcptr = add ;

break;

case 2:funcptr = sub ;

break;

case 3: funcptr = mul;

break;

default:

printf("\ninvalid input\n");

}

return funcptr;

}

int add( int n1,int n2)

{

return(n1+n2);

}

int mul( int n1,int n2)

{

return(n1*n2);

}

int sub( int n1, int n2)

{

if(n1 > n2 )

return(n1-n2);

if(n2 >n1 )

return(n2-n1);

if(n1 == n2)

{

printf("\nBoth numbers are same\n");

return 0;

}

}

No comments:

Post a Comment