title: What is the difference between calling functions in the following way?
body: <pre><code>foo();
  
  (*foo)();
  
  (&amp;foo)();
  </code></pre>
  
  <p>What exactly is the difference between these function calls (assuming <code>foo()</code> is defined somewhere)? and are there any situations where one might be used over another?</p>
  
  <p>Also, why don't <code>&amp;foo()</code> and <code>*foo()</code> work?</p>