title: What does void *(*routine)(void *) mean in C?
body: <p>I'm learning C and I came to this expression:</p>
  
  <pre><code>void *(*routine)(void *)
  </code></pre>
  
  <p>I find it very confusing. Maybe it's a pointer...to a pointer... to a pointer?</p>
  
  <p>If I wanted to pass this thing into a function, how would we manipulate it? I am trying to pass this routine construction as a parameter to a function that takes a <code>void(*)(void)</code>... but I am rather lost on what that actually means.</p>