title: How does dereference work C++
body: <p>I have trouble understanding what happens when calling &amp;*pointer</p>
  
  <pre><code>int j=8;
  int* p = &amp;j;
  </code></pre>
  
  <p>When I print in my compiler I get the following</p>
  
  <pre><code>j = 8 , &amp;j =  00EBFEAC  p = 00EBFEAC , *p = 8 , &amp;p =  00EBFEA0 
  &amp;*p= 00EBFEAC
  
  cout &lt;&lt; &amp;*p gives  &amp;*p = 00EBFEAC which is p itself
  </code></pre>
  
  <p>&amp; and * have same operator precedence.I thought &amp;*p would translate to <code>&amp;(*p)--&gt; &amp;(8)</code> and expected compiler error.</p>
  
  <p>How does compiler deduce this result? </p>