Pointers to functions in C++
In C++, just as we can have pointers to variables, we can have pointers to functions as well.
The general syntax of a pointers to a functions is:
return-type (*pointer-name) (list of parameter);
For example:
void (*p) (float, int);
In the above declaration, a pointer to a function returns void and takes the two formal arguments of float and int types respectively.
After declaring a pointer to a function, the address of the function must be assigned to a pointer as follows:
p = &function-name;
where p is a pointer variable.
Through pointer to function, the function is called as follows:
A = (*p) (x, y);
where, x and y are actual parameters, and
A is a variable in which the function’s return value is stored,
p is a pointer name which points to the function
Let us illustrate pointer to function with a programming example as follows:
#include<iostream.h>
void main()
{
float add(float, float); //function prototype
float a, b, s;
float (*p) (float, float); //declaration of pointer to function
p = &add; //assigning function add to p
a = 20.5;
b = 10.3;
s = (*p) (a,b); //calling function add through pointer
//to function p
cout << "s= " << s << endl;
}
float add(float a1, float a2)
{ //add function defined
int sum;
sum = a1 + a2;
return(sum);
}
The output of the above program would be:
s = 30.8
In the above program:
- The statement:
float (*p) (float, float);
declares a pointer
pwhich is a pointer to function - The statement:
p = &add;
assigns the address of function
addtop, i.e., now pointerppoints to functionadd - The statement:
s = (*p) (a, b);
calls the function which is pointed by
p(i.e., add) and then assigns the returned value of function tos - It is worthwhile to note here that if in pointer to function declaration we skip the bracket in which pointer name is is written the C++ compiler interprets it as a function which returns a pointer type value. For example, if in above program we write:
float *p (float, float);
then this statement means
pis a function which returns pointer and the pointer points tofloattype data. i.e., function returns a pointer tofloat
Hi! I could have sworn I’ve been to this website before but after checking through some of the post I realized it’s new to me.
Anyhow, I’m definitely happy I found it and I’ll be
book-marking and checking back frequently!
Nice explanation, but Why VOID MAIN() … it can’t be accepted.