What's the difference between f1, (*f1), f2, (*f2) ? and what's the difference between (function) and (&function) ?
#include <iostream>
using namespace std;
void function (char *s) {
    cout << s << endl;
}
int main () {
    void (*f1) (char*) = &function;
    void (*f2) (char*) = function;
    f1 ("f1 function without dereference.");
    (*f1) ("f1 function with dereference.");
    f2 ("f2 function without dereference.");
    (*f2) ("f2 function with dereference.");
    return 0;
}
 
     
    