title: Accessing C union members via pointers
body: <p>Does accessing union members via a pointer, as in the example below, result in undefined behavior in C99?  The intent seems clear enough, but I know that there are some restrictions regarding aliasing and unions.</p>
  
  <pre><code>union { int i; char c; } u;
  
  int  *ip = &amp;u.i;
  char *ic = &amp;u.c;
  
  *ip = 0;
  *ic = 'a';
  printf("%c\n", u.c);
  </code></pre>