You aren't calling the function, just "mentioning" the function name, which does nothing.
Code:#include <stdio.h> void foo() { printf("X\n"); } int main() { void (*f)(void) = &foo; // don't actually need the & (*f)(); // the parens that contain the arguments (if any) constitute // the "function call operator" f(); // and you don't actually need the dereference operator return 0; }