Dans un tableau de nombres, nous recherchons le premier entier supérieur à 5. (en langage C)
La première approche sans fonction de rappel:
int i; for (i = 0; i < length; i++) { if (array[i] > 5) { break; } } if (i < length) { printf("Item %d\n", i); } else { printf("Not found\n"); }
La seconde avec fonction de rappel:
/* LIBRARY CODE */ int traverseWith(int array[], size_t length, int (*callback)(int index, int item, void *param), void *param) { int exitCode = 0; for (int i = 0; i < length; i++) { exitCode = callback(i, array[i], param); if (exitCode != 0) { break; } } return exitCode; } /* APPLICATION CODE */ int search (int index, int item, void *param) { if (item > 5) { *(int *)param = index; return 1; } else { return 0; } } /* (in another function) */ int index; int found; found = traverseWith(array, length, &search, &index); if (found) { printf("Item %d\n", index); } else { printf("Not found\n"); }