- HubPages»
- Technology»
- Computers & Software»
- Computer Science & Programming»
- Programming Languages
Function Pointer in C Programming Language
Like C variables, functions too has address and we can use this address to invoke function. So this tutorial is entirely devoted to function-pointer. But before we can call a function using we need to find out its address. So first we will see how to find memory address of a C function then we will call that function using its address.
Memory address of a C Function
#include<conio.h> #include<stdio.h> int show(); void main() { clrscr(); printf("Addres of show() : %u", show); show(); getch(); } int show() { printf("\n\nFunction called!"); return 0; }
So let’s have a quick view of what this code does when you run this program. Line no 3 declares a function called “show” which has return type of integer. This is really a simple function which will print a simple message on calling. If you are new to C function then you can learn about C function here.
Line no 5-11 is main function block. In this code block only line no 8 is important for us now. This line contains a printf statement which prints address of user defined function called “show”. To print address of “show()” we only need to mention function name only in printf statement as we did in line no 8. And rest of the code is simple enough to understand.
Function pointer in C Language
In the above program we learnt how to obtain address of a function and now we will use that logic to call function using pointer. So below is a C program which is same as the above program but has some extra statements. Go through this code cautiously and right after code you will find its explanation.
#include<stdio.h> #include<conio.h> int show(); void main() { int (*fnPtr)(); clrscr(); fnPtr=show; printf("Address of function :%u",show); (*fnPtr)(); getch(); } int show() { printf("\nFunction called using pointer!"); return 0; }
Example of function pointer in C Language
We have declared prototype of a user defined function “show” which has integer return type. It’s a must condition for a UDF to return any data type because pointers can store address of data type (like char, int etc.). So function returning void will not work.
In our case we have function returning integer so our function pointer have to have integer type. Line no 7 declares an integer type function pointer. To declare a function pointer use the following syntax.
data-type (*function_name)();
You should write function name in bracket otherwise C compiler will throw error at compilation time as it happened in my case.
In line no 10 we are assigning address of show function to our function pointer and in line no 12 simply prints address of “show” function. Line no 13 calls our UDF using pointer. As you can see we just need to write function pointer name as we declared and it will call the function.
Line no 17-21 is “show()” declaration and I think rest is simple. But if find any difficulty then please ask me without hesitation.
Here is output of above program.
Reader's Feedback
Did this help you to learn Function Pointer concept?
Usage of Function Pointer
Function pointer mainly used for writing memory resident programs like virus and anti virus.
C Programming other tutorials
- Data Types in C Language
A programming language is proposed to help programmer to process certain kinds of data and to provide useful output. The task of data processing is accomplished by executing series of commands called... - Pointers in C Programming
In this tutorial I am going to discuss what pointer is and how to use them in our C program. Many C programming learner thinks that pointer is one of the difficult topic in C language but its not... - C Programming-Dynamic Memory Allocation
This tutorial is intended to tell beginner the power of pointers in C programming. This tutorial will try to explain how with the help of pointer we can solve the problem of memory management. If you don't... - 2d Array in C Programming Language
We know how to work with an array (1d array) with one dimension. In C language it is possible to have more than one dimension in an array. This tutorial explains how we can use two dimensional arrays (2D array or matrix array) to store values with ex - Multi-Dimensional Arrays (3D Arrays) in C Programming Language
C allows array of two or more dimensions. More dimensions in an array means more data can be held.
© 2009 RAJKISHOR SAHU