title: Can't understand this way to calculate the square of a number
body: <p>I have found a function that calculates square of a number:</p>
  
  <pre><code>int p(int n) {
      int a[n]; //works on C99 and above
      return (&amp;a)[n] - a;
  }
  </code></pre>
  
  <p>It returns value of n<sup>2</sup>. Question is, how does it do that? After a little testing, I found that between <code>(&amp;a)[k]</code> and <code>(&amp;a)[k+1]</code> is <code>sizeof(a)</code>/<code>sizeof(int)</code>. Why is that?</p>