title: casting then dereferencing pointers in C
body: <p>When working with <code>char</code> buffers in C, sometimes it would be useful and more efficient to able to work with <code>int</code>-sized chunks of data at a time. To do this I can cast my <code>char *</code> to an <code>int *</code> and use that pointer instead. However I'm not entirely confident that this works the way I think it does.</p>
  
  <p>For example, suppose I have <code>char *data</code>, does <code>*(int32_t *)data = -1</code> always overwrite the bytes <code>data[0]</code>, <code>data[1]</code>, <code>data[2]</code> and <code>data[3]</code> and no other bytes?</p>