Back
Syntax
Study
Editor
Mode:
HTML
CSS
JavaScript
PHP
Reset
Run »
HTML / CSS / JS
#include <stdio.h> #include <stdlib.h> #include <string.h> /* typedef makes function pointer syntax readable */ typedef int (*CompareFunc)(const void *, const void *); int compare_int_asc(const void *a, const void *b) { return (*(const int *)a) - (*(const int *)b); } int compare_int_desc(const void *a, const void *b) { return (*(const int *)b) - (*(const int *)a); } void print_array(const int *arr, int n) { for (int i = 0; i < n; i++) printf("%d ", arr[i]); printf(" "); } /* Accepts a callback */ void sort_and_print(int *arr, int n, CompareFunc cmp) { qsort(arr, (size_t)n, sizeof(int), cmp); print_array(arr, n); } int main(void) { int data[] = {42, 7, 19, 3, 55, 11}; int n = 6; printf("Ascending: "); sort_and_print(data, n, compare_int_asc); printf("Descending: "); sort_and_print(data, n, compare_int_desc); /* Array of function pointers — dispatch table */ CompareFunc table[] = { compare_int_asc, compare_int_desc }; int choice = 0; /* 0 = asc, 1 = desc */ int copy[] = {9, 1, 5, 3, 7}; printf("Table[%d]: ", choice); sort_and_print(copy, 5, table[choice]); return 0; }
Result
Open