Introduction
Pointers form very important part of C language, so the solid understanding of the pointers and the effectively in using them will enable the programmer to write more experienced programs.We should always remeber that the pointer is variable hold memory address. Pointer can refer to usual data type like int, char, double and etc . For example when you type
int * intptr;
int intval = 5 ;
intptr = & intval ;
Not only regulare data type but also pointer can point to functions.
Function Pointers
The function pointer is a pointer hold the address of the function. Since C is not OOP language I Consider the Function Pointer as the Father of virtual functionality in the modern languages. In the oop language each driven class will implements the virtual method depend on its need. In the C it is something similar, since we give the function pointer the address of the desired function implementation.
Syntax
To declare function pointer we have to follow the next syntax
Return Type ( * function pointer's variable name ) ( parameters )
The declaration of function pointer called func which accept two integer parameters and return an integer value will be like next:
int (*func)(int a , int b ) ;
It is convenient to declare a type definition for function pointers like:
typedef int (*func)(int a , int b ) ;
Function Pointer in Struct
Stuct in C used to represent data structure elemenst, such as student data structure. Struct can contian varible from simple data type and others from complex ones. complex data type such as varible of function pointer. The easy way to explain the programming ideas by give some simple and suffecient code, Let is start by defining a function pointer and simple struct.
We define first an function pointer called Operation which return an int value and accepts two integer parameters
typedef int (*Operation)(int a , int b );
Let us also have a simple struct STR which contains pointer to the Operation function pointer and an integer variable to store the returned value from the Operation variable:
typedef struct _str {
int result ;
Operation opt;
} STR;
Now we will define tow function Add and Multi , each of them retuen integer value and accept two integer parameters.
int Add ( int a , int b ){
return a+b ;
}
int Multi ( int a , int b ){
return a*b ;
}
Now we can write the main method and learning how to assign the function pointer to the proper function
int main (int argc , char **argv){
STR str_obj;
str_obj.opt = Add;
str_obj. result = str_obj.opt(5,3);
printf (" the result is %d\n", str_obj.result );
str_obj.opt= Multi;
str_obj. result = str_obj.opt(5,3);
printf (" the result is %d\n", str_obj.result );
return 0 ;
}
The results will be :
the result is 8
the result is 15
Conclusion
Function pointer is c technique which enable the programmer to controlling the execution sequence within an application by allowing alternate functions to be executed based on the application’s needs.