void printNumber(int i) {
printf("%d; ", i);
}
//calls the function for every element, like for_each
void forEach(const int arr[], size_t count, void (*action)(int)) {
for (size_t i = 0; i < count; i++) {
action(arr[i]);
}
}
int arr[] = {2, 3, 5, 7, 11, 13, 17};
size_t count = sizeof arr / sizeof arr[0];
//C has no for-each loop: a pointer walks from the first element
//to the one past the last
for (const int *p = arr; p != arr + count; p++) {
printf("%d; ", *p);
}
printf("\n");
//printed: "2; 3; 5; 7; 11; 13; 17; "
forEach(arr, count, printNumber);
printf("\n");
//printed: "2; 3; 5; 7; 11; 13; 17; "