Function Pointer In C
By rajkishor09
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.
| No Photo |
The C++ Programming Language by Bjarne Stroustrup (1986, Paperback)
Current Bid: $.99
|
|
|
C Programming Language (2nd Edition) by Brian W. Kerni
Current Bid: $27.98
|
|
|
C Programming Language (2nd Edition) (Prentice Hall Software)
Current Bid: $27.48
|
|
|
C Programming Language by Dennis M. Ritchie and Brian W. Kernighan
Current Bid: $14.95
|
|
|
The C Programming Language by Brian W. Kernighan (1988, Paperback)
Current Bid: $30.90
|
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.
Usage of Function Pointer
Function pointer mainly used for writing memory resident programs like virus and anti virus.
C program learner's poll
Did this help you to learn Function Pointer concept?
See results without votingC 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 dont... - How to work with Two Dimensional Arrays in C
We know how to work with an array (1D array) having one dimension. In C language it is possible to have more than one dimension in an array. In this tutorial we are going to learn how we can use two... - How to work with Multidimensional Array in C Programming
C allows array of two or more dimensions and maximum numbers of dimension a C program can have is depend on the compiler we are using. Generally, an array having one dimension is called 1D array, array... - How to Setup Laptop Mobile Internet using Bluetooth
In this tutorial I am not going to say same thing which I already mentioned in How to Setup Laptop Mobile Internet using Mobile Phone tutorial. In this workshop you will need a Bluetooth dongle and... - How to enable Show Hidden Files and Folders option disabled after virus attack
If you ever faced such problem when your computer had a virus which ultimately disabled show hidden file and folders option, then you dont need to format or restore your setting. I have a trick... - Speed Up Internet with Google Public DNS
If you are looking to increase your internet speed without any expensive software then you came to right place. I will tell you how to increase your internet speed up to 50%-60 % with few clicks. I...
Comments
Good tutorial. Arrays of pointers are also useful for writing flexible code.
You said "Line no 5-11 is main function block."
Should that be lines 5-15?
it is very nice
Create a simple calculator using the concept of function
pointers
can u plz help me on this code plz replay soon
thank u
Thanks a lot ...
thanks a lot
thanks really a very good stuff i got from this .... tutorial
thanks really a very good stuff i got from this .... tutorial
it's good,but i have somewhat confusion about function pointers,i don't have clearance
iam ck shill from tezpur assam
good.But pls explain very clear
wt is the use of function pointer
nice one sir jee!!!!!!!!!!!!!
nice but explain and
write with pointer
was help full ...........
gave some feed!!!!!!
1 #include
2 #include
3
4 void cmp(int a, int b){
5 printf("a=%d, b=%d\n", a, b);
6 }
7
8 int main(){
9 void (*foo)(int, int);
10 foo = cmp;
11 foo(1, 2);
12 return 1;
13 }
::~Dude~::
this function is returning void.....
but u said its not possible....
Da sa gup dy sa 6 website na ba zda ki,
KAKH NI PPEYA PALLE................................9803955780
Nice explaination
using a function pointer as you showed does the same as just calling the function normally so i'm a bit confused as to what is the purpose of a function pointer.
why do we use a function pointer instead of using normal function call?? please any feed back would be deeply appreciated.
@Jamal : answer is there in tutorial.
Function pointers are mostly used in GUI programs. Example you declare a button or a dialog with button, and you want to assign a function for that button. It might sound difficult for anyone with no knowledge about it, but the functions/actions of the button are sent as pointers to the createButton() etc.. kind of functions.
Yes vijay you are right...





rajkishor09 2 years ago
I am writing these tutorials for students studying c in their school, college. And in school colleges you have turbo c compiler. Thanks for your comments.