1  struct foo { int i; int j; };
       2  
       3  int bar (struct foo *k, int k2, int f, int f2)
       4  {
       5    int *p, *q;
       6    int res;
       7    if (f)
       8      p = &k->i;
       9    else
      10      p = &k->j;
      11    res = *p;
      12    k->i = 1;
      13    if (f2)
      14      q = p;
      15    else
      16      q = &k2;
      17    return res + *q;
      18  }
      19  
      20  extern void abort (void);
      21  
      22  int main()
      23  {
      24    struct foo k;
      25    k.i = 0;
      26    k.j = 1;
      27    if (bar (&k, 1, 1, 1) != 1)
      28      abort ();
      29    return 0;
      30  }