In this lesson, you will learn about function pointer in C, its usage, and how to pass a pointer to a function as a parameter.
Function Pointer in C
As we learned from the lesson User Defined Functions in C, a function can return a Data Type, such as float
, integer
, etc. In programming, a function can also return a pointer Data Type. To do so, you will need to create a function that returns a pointer type:
int* PointerFunction() { static int a = 30; return (&a); }
Now, call the function above from the main() function:
int main() { int* intPointer; intPointer= PointerFunction(); printf("%p\n", intPointer); printf("%d\n", *intPointer); return 0; }
Output
0x60104030
Now you are probably wondering why the variable a
is declared static. A static variable preserves its value even if it is out of the program scope. In C, a compiler makes a stack for the function call:
intPointer= PointerFunction();
As soon as the function exits, the function stack is destroyed, causing all variables to lose their values if declared as non-static.
Pass a pointer to a function in C as a parameter
A function in C can take a pointer as an argument, just like other Data Types.
#include <stdio.h> int* Greater(int*, int*); void main() { int x = 12; int y = 14; int *intPointer; intPointer = Greater(&x, &y); printf("%d is Greater",*intPointer); } // Pass pointers arguments int* Greater(int *a, int *b) { if(*a > *b) return a; else return b; }
Output
14 is Greater
Summary
- Functions in C can return a pointer Data Type.
- A pointer can be passed to a function as a parameter.