Function Pointers in C
introduction
this is a short excerpt on function pointers in C.
What is a pointer?
a pointer
is a variable that holds a physical memory address of another variable.
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a = 1337; //value
int *b; //declare a pointer
b = &a; //b holds the addr to a;
printf("addr: %d, val: %d\n", b, *b); //print addr and "a" value.
return EXIT_SUCCESS;
}
Output:
addr: 1293474476, val: 1337
What is a function pointer?
a function pointer
points to a function. it can be called like any other function.
#include <stdio.h>
#include <stdlib.h>
int add(int a, int b){
return a+b;
}
int main(){
int (*funcPointerAdd) (int, int) = &add;
/* ↓ ↓ ↓ ↓
(return_type) (Function Name) (arg1) (arg2) (assign to actual function addr.)
*/
int res = funcPointerAdd(5,8);
printf("%d\n", res);
return EXIT_SUCCESS;
}
Function Pointer as a type
#include <stdio.h>
#include <stdlib.h>
int add(int a, int b){
return a+b;
}
typedef int (*funcPointer_t) (int, int);
/* ↓ ↓ ↓ ↓ ↓
(typedef) (return_type) (type_name) (arg1) (arg2) */
int main(){
funcPointer_t x = &add;
int res = x(15,51);
printf("%d\n", res);
return EXIT_SUCCESS;
}