Functions
Function Pointers
A function pointer stores the address of a function so code can call one operation through a variable.
Function Pointers
function_pointers.c
#include <stdio.h>
int doubleValue(int value) {
return value * 2;
}
int tripleValue(int value) {
return value * 3;
}
int apply(int value, int (*op)(int)) {
return op(value);
}
int main(void) {
int value = ;
int useTriple = ;
int result = 0;
if (useTriple) {
result = apply(value, tripleValue);
} else {
result = apply(value, doubleValue);
}
printf("result=%d\n", result);
return 0;
}
#include <stdio.h>
int doubleValue(int value) {
return value * 2;
}
int tripleValue(int value) {
return value * 3;
}
int apply(int value, int (*op)(int)) {
return op(value);
}
int main(void) {
int value = ;
int useTriple = ;
int result = 0;
if (useTriple) {
result = apply(value, tripleValue);
} else {
result = apply(value, doubleValue);
}
printf("result=%d\n", result);
return 0;
}
#include <stdio.h>
int doubleValue(int value) {
return value * 2;
}
int tripleValue(int value) {
return value * 3;
}
int apply(int value, int (*op)(int)) {
return op(value);
}
int main(void) {
int value = ;
int useTriple = ;
int result = 0;
if (useTriple) {
result = apply(value, tripleValue);
} else {
result = apply(value, doubleValue);
}
printf("result=%d\n", result);
return 0;
}
#include <stdio.h>
int doubleValue(int value) {
return value * 2;
}
int tripleValue(int value) {
return value * 3;
}
int apply(int value, int (*op)(int)) {
return op(value);
}
int main(void) {
int value = ;
int useTriple = ;
int result = 0;
if (useTriple) {
result = apply(value, tripleValue);
} else {
result = apply(value, doubleValue);
}
printf("result=%d\n", result);
return 0;
}
#include <stdio.h>
int doubleValue(int value) {
return value * 2;
}
int tripleValue(int value) {
return value * 3;
}
int apply(int value, int (*op)(int)) {
return op(value);
}
int main(void) {
int value = ;
int useTriple = ;
int result = 0;
if (useTriple) {
result = apply(value, tripleValue);
} else {
result = apply(value, doubleValue);
}
printf("result=%d\n", result);
return 0;
}
#include <stdio.h>
int doubleValue(int value) {
return value * 2;
}
int tripleValue(int value) {
return value * 3;
}
int apply(int value, int (*op)(int)) {
return op(value);
}
int main(void) {
int value = ;
int useTriple = ;
int result = 0;
if (useTriple) {
result = apply(value, tripleValue);
} else {
result = apply(value, doubleValue);
}
printf("result=%d\n", result);
return 0;
}
function pointer
`int (*op)(int)` is a pointer to a function that takes and returns an `int`.
callback
Passing a function pointer lets another function call back into the selected operation.