Example 1: An example with complex language features. typedef struct S { int *pi; int (*pf)(); }S; void foo(S **pp) { *pp = malloc(sizeof(S)); (*pp)->pi = &i; (*pp)->pf = bar; } void main( void) { S *p; foo(&p); while(i < 10) i = (*p->pf)(p) +1; }