title: What are the differences between Variable Length Arrays and Flexible Array Member?
body: <p>I've seen in the <a href="http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf" rel="nofollow">ISO C99 committee draft</a> that structs can have an incomplete an array with unspecified size its end, known as Flexible Array Member.</p>
  
  <p>On the other hand C99 also has Variable Length Arrays, which allow declaring arrays with size not constant at compile-time.</p>
  
  <p>I thought that a FAM was a special kind of a VLA, but I've seen two SO users claiming otherwise. Also, reading the <a href="https://en.wikipedia.org/wiki/Sizeof#Using_sizeof_with_arrays" rel="nofollow">Wikipedia section on <code>sizeof</code></a>, it says that <code>sizeof</code> behaves differently for those two.</p>
  
  <p>Why do both of them exist instead of just one? (Are their use-cases too different?)</p>
  
  <p>Also, which other associated behaviors are different for each of them?</p>