That seemed pretty straightforward to me.  A zero size array is better thought of as a pointer to that part of the struct, and if you put two back to back you get two pointers to the same spot.  I&#x27;m not sure what that guy was expecting to happen.<p>The usual reason to use them is when you have a protocol header with a variable length data portion.  Putting the zero length array in the struct allows you easy access to the data while not changing the sizeof() the header so you can avoid a bit of pesky pointer math and make the code easier to read.<p>Thinking about this some more, you could also use this as a ghetto form of union, but I&#x27;m not sure why you would want to.<p><pre><code>  struct
  {
    char[0] theBytes;
    int     theValue;
  }</code></pre>