I\'d like to understand what is the difference between the 2 declarations, f1
and f2
, below:
In f1
I declare the parameter to be a pointer
They're equivalent. You're getting confused by the implicit pointer conversion that happens with arguments.
Since you can't pass a function as an argument to a function (you can't do anything with functions in C other than call them or take their address), the compiler silently changes the argument into a pointer to a function.
This is much the same as happens with arrays -- you can't pass arrays as function arguments either, so any time you declare a function argument as an array, it silently gets changed into a pointer.