imagine the struct as a skeleton .
it has 2 placeholders(say) :
int a;
int * (CallFunc)(int a,int b);
which needs to b filled by appropriate values.
now the call
d.CallFunc
fill (or) calls(in this case) the second fn of the struct to use it for storing
values.