struct st{ struct st { int a; char ch; }; volatile int result; int (*p[4]) (int x, int y); int foo(int a, int b) { a++; b++; return a; } int main(void) { volatile int i, j, op; p[0] = foo; /* address of foo() */ struct st obj; struct st *stobj = &obj; stobj->a = 0x05; stobj->ch = 0x09; result = (*p[0]) (3,4); }