bar(foo);
is called the "short" version
bar(&foo);
is how it is officially done
Functionally, there is no difference, however the second options is considered "good practice" by most since that way it is more obvious that foo is actually a function pointer and not an actual function.
This is similar as with arrays. If you have:
int foobar[10];
then foobar is an int *, but you can also do &foobar for the same result.