Gosh Darn Function Pointers
NB: If an argument to a function is a function pointer, you can write it like a normal function declaration.<p>So you can write<p><pre><code>  void transform_string(char s[], char transform(char));
</code></pre>
instead of having to write<p><pre><code>  void transform_string(char s[], char(*transform)(char));
</code></pre>
When writing C++ you should use function <i>references</i> when possible, as references cannot be null.<p><pre><code>  void transform_string(char s[], char(&amp;transform)(char));
</code></pre>
Function references unfortunately require the more complex syntax, but fortunately C++11 `using`-style typedefs are quite simple to use with function types.<p><pre><code>  using TransformFunc = char(char, char);
  typedef char TransformFunc(char, char); &#x2F;&#x2F; C-style typedef, same as above

  &#x2F;&#x2F; Function pointer
  TransformFunc fptr = &#x2F;* ... *&#x2F;

  &#x2F;&#x2F; Function reference
  TransformFunc &amp;fref = &#x2F;* ... *&#x2F;</code></pre>