Absolutely nothing special in this code. There is nothing "built-in" here.
These are regular function pointers. In declaration C
int foo(int f(int,int), int g(int,int), int x)
automatically interpreted as
int foo(int (*f)(int,int), int (*g)(int,int), int x)
sq and pl functions passed as arguments to foo
foo(sq, pl, 1); // same as foo(&sq, &pl, 1)
(the & operator is optional) and is called through these pointers inside foo
int y = g(x,x); // same as (*g)(x,x) return f(y,y); // same as (*f)(y,y)
( * operator in a call is optional).
I donβt know where you got these values 3392 and 3488 . Function pointers are not passed as integers. If your debugger decided to display pointer values ββas 3392 and 3488 , this should be a problem with your debugger.
source share