What is a function pointer in C?
Table of Contents
- Introduction:
- How to Declare and Use Function Pointers
- Practical Examples of Function Pointers
- Conclusion:
Introduction:
In C, a function pointer is a pointer that stores the address of a function, allowing you to call functions dynamically. This concept enables flexible and dynamic programming, such as callback functions, event-driven programming, and arrays of function pointers. Function pointers play a crucial role when you need to pass functions as arguments or select functions at runtime.
How to Declare and Use Function Pointers
Declaring Function Pointers
A function pointer stores the address of a function. The syntax for declaring a function pointer is similar to that of a regular pointer but includes the function's return type and parameter types.
Syntax:
Example:
Assigning and Calling a Function via Pointer
You can assign the address of a function to a function pointer and then call the function using the pointer.
Example:
In this example:
func_ptr
is a pointer to a function that takes twoint
arguments and returns anint
.- The
add()
function's address is assigned tofunc_ptr
, and the function is called via the pointer.
Practical Examples of Function Pointers
Using Function Pointers for Callback Functions
In some programs, functions are passed as arguments to other functions. Function pointers make this possible.
Example:
In this example, the greet()
function takes a function pointer as an argument and calls the function passed to it.
Arrays of Function Pointers
An array of function pointers allows you to store multiple functions and choose which one to call at runtime.
Example:
In this example:
- An array of function pointers stores the
operation1()
andoperation2()
functions. - Functions are called dynamically based on their position in the array.
Conclusion:
Function pointers in C provide powerful mechanisms for writing dynamic and flexible programs. They enable passing functions as arguments, calling functions dynamically, and implementing callback functions or event-driven programming. With a good understanding of function pointers, you can write more modular and maintainable C code by separating logic into interchangeable function components.