title: Are there any differences between these two higher-order function definitions?
body: <p>Are there any differences among 4 statements in main?
  I feel only apply2(&amp;func) makes sense. However, all 4 return the same value. </p>
  
  <pre><code>int func(void) 
  {
      return 1;
  }
  
  int apply1( int f1(void) )
  {
      return f1();
  }
  
  int apply2( int (*f1) (void) ) 
  {
      return f1();
  }
  
  int main() 
  {
      apply1(func); 
      apply1(&amp;func);
      apply2(func);
      apply2(&amp;func);
  
      return 0;
  }
  </code></pre>