What does & in C++ function arguments list mean?
<blockquote>
  <p><strong>Possible Duplicate:</strong><br>
  <a href="http://stackoverflow.com/questions/57483/what-are-the-differences-between-pointer-variable-and-reference-variable-in-c">What are the differences between pointer variable and reference variable in C++?</a><br>
  <a href="http://stackoverflow.com/questions/9488894/what-does-a-function-prototype-mean-with-an-ampersand-in-it">What does a function prototype mean with an ampersand in it?</a>  </p>
</blockquote>



<p>In my understanding, </p>

<pre><code>void bar(int &amp;x) { ... }
</code></pre>

<p>Seem to mean pass <code>x</code> by reference. But in C++, there are pointers etc already. So what difference is there to </p>

<pre><code>void bar(int *x) { ... }
// then call by
bar(&amp;x);
</code></pre>

<p>Apart from the fact that it's longer... I also noticed if I use the 2nd method, I need to use <code>-&gt;</code> as opposed to <code>.</code> if I pass in a <code>struct</code>... why? </p>
