Callback функции это функции вызываемые через указатель на них, который передается в другую функцию. Делается обычно для асинхронных запросов, или для долго выполняющихся функций, что бы не опрашивать многократно "Готов ли результат?", а функция сама по окончанию сообщила об этом (вызвала бы другую функцию через указатель на нее - который был передан ей как аргумент).
#include <stdio.h> // printf()
void print_ar(void (*p_func)(int)){ // В параметре принимает указатель на функцию
for(int i = 0; i < 10; i++){
p_func(i);
}
}
void print_val(int val){ // Функция печатает значение
printf("%d ", val);
}
int main(){
print_ar(print_val); // Вызов функции с указателем на функцию
}