#include <stdlib.h>
#include <stdio.h>
// function pointer .
typedef int (*CompareFunc)(const void *, const void *);
int even_order(const void *first_arg, const void *second_arg)
{
int first = *(int *)first_arg;
int second = *(int *)second_arg;
if (first < second)
{
return -1;
}
else if (first == second)
{
return 0;
}
else
{
return 1;
}
}
// Function pointer a parametre veriyoruz .
void sort(int array[], int size, CompareFunc compare)
{
qsort(array
, size
, sizeof(int), compare
); }
int main()
{
int array[5];
int i;
/* fill array */
for (i = 0; i < 5; i++)
{
array[i] = 10 - 2 * i;
}
// function pointer a sort uyguluyoruym .
sort(array, 5, even_order);
for (i = 0; i < sizeof(array) / sizeof(int); i++)
{
}
return 0;
}
I2luY2x1ZGUgPHN0ZGxpYi5oPgojaW5jbHVkZSA8c3RkaW8uaD4KCi8vIGZ1bmN0aW9uIHBvaW50ZXIgLgp0eXBlZGVmIGludCAoKkNvbXBhcmVGdW5jKShjb25zdCB2b2lkICosIGNvbnN0IHZvaWQgKik7CgppbnQgZXZlbl9vcmRlcihjb25zdCB2b2lkICpmaXJzdF9hcmcsIGNvbnN0IHZvaWQgKnNlY29uZF9hcmcpCnsKICAgIGludCBmaXJzdCA9ICooaW50ICopZmlyc3RfYXJnOwogICAgaW50IHNlY29uZCA9ICooaW50ICopc2Vjb25kX2FyZzsKICAgIGlmIChmaXJzdCA8IHNlY29uZCkKICAgIHsKICAgICAgICByZXR1cm4gLTE7CiAgICB9CiAgICBlbHNlIGlmIChmaXJzdCA9PSBzZWNvbmQpCiAgICB7CiAgICAgICAgcmV0dXJuIDA7CiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgICAgcmV0dXJuIDE7CiAgICB9Cn0KCi8vIEZ1bmN0aW9uIHBvaW50ZXIgYSBwYXJhbWV0cmUgdmVyaXlvcnV6IC4Kdm9pZCBzb3J0KGludCBhcnJheVtdLCBpbnQgc2l6ZSwgQ29tcGFyZUZ1bmMgY29tcGFyZSkKewogICAgcXNvcnQoYXJyYXksIHNpemUsIHNpemVvZihpbnQpLCBjb21wYXJlKTsKfQoKaW50IG1haW4oKQp7CiAgICBpbnQgYXJyYXlbNV07CiAgICBpbnQgaTsKICAgIC8qIGZpbGwgYXJyYXkgKi8KICAgIGZvciAoaSA9IDA7IGkgPCA1OyBpKyspCiAgICB7CiAgICAgICAgYXJyYXlbaV0gPSAxMCAtIDIgKiBpOwogICAgfQoKICAgIC8vIGZ1bmN0aW9uIHBvaW50ZXIgYSBzb3J0IHV5Z3VsdXlvcnV5bSAuCiAgICBzb3J0KGFycmF5LCA1LCBldmVuX29yZGVyKTsKCiAgICBmb3IgKGkgPSAwOyBpIDwgc2l6ZW9mKGFycmF5KSAvIHNpemVvZihpbnQpOyBpKyspCiAgICB7CiAgICAgICAgcHJpbnRmKCIlZFxuIiwgYXJyYXlbaV0pOwogICAgfQogICAgcmV0dXJuIDA7Cn0K