funptr.c
431 Bytes
#include <stdio.h>
int* f1(int* a, const int* b)
{
*a += *b;
return a;
}
int* f2(int* a, const int* b)
{
*a -= *b;
return a;
}
int* (*fun(int s))(int*, const int*)
{
if (s == 1)
return f1;
else
return f2;
}
int main()
{
int* (*(*fp2)(int))(int*, const int*) = fun;
int a = 15;
int b = 32;
fp2(1)(&a, &b);
fp2(2)(&b, &a);
printf("%d %d\n", a, b);
return 0;
}