POINTERS AND FUNCTIONS:
Every variable in ’C’ has an address except register
variable. We can access these addresses using pointers. Likewise, functions in
‘C’ also have addresses. The address
of a function can be known by pointers to function.
A pointer to a function can be declared as follows.
Data type
(*function name)(parameter list);
Eg:-
int (*p)(
);
It
indicates ‘p’ is a pointer to a function which stores address of a function.
Ć A
Program to call a function using pointers.
#include<conio.h>
void (*p)( );
void show( );
void main( )
{
p=show;
(*p)( );
}
void show
{
printf(“address of
function%u”,show);
}
Functions
returning pointers:
The
way in which a function can return an integer, float or any other datatype, it
can also return a pointer, it has to be mentioned explicitly.
A function
returning a pointer can be declared as follows:-
Data type *function name(parameters);
Eg:-
int *fun();
void main()
{
int *p;
p=fun();
printf(“%u”,p);
}
int *fun()
{
int a=5;
printf(“address of a is”);
return(&a);
}
Here, the declaration int *fun(): indicates that fun() is a
function without parameters but return an integer pointer.
Functions
returning multiple values:-
Normally a
function can return only one value at a time. But it is possible to make a
function return multiple values at a time by using pointers.
Eg:-
#include<stdio.h>
#include<conio.h>
int fun(int *, int *, int *, int *);
void main()
{
int x,y, sum, diff;
clrscr();
printf(“\n enter any 2 values”);
scanf(“%d%d”,&x,&y);
fun(&x, &y, &sum, &diff);
printf(“sum=%d”,sum);
printf(“diff=%d”,diff);
}
int fun(int *a, int *b, int *c, int *d);
{
*c=*a+*b;
*d=*a-*b;
}
No comments:
Post a Comment