correct way to assign function pointer
I'm a little confused about the correct syntax for assigning a function pointer to a variable. If I have a function foo int foo(); and I am assigning a pointer to foo to variable bar void * bar; it does not seem to matter if I use bar = foo; // or bar = &foo; It seems to me that only one of these should be correct or am I missing something? foo and &foo values are equivalent in C and have same type. The & operator here is correct but redundant. Note that assigning a function pointer to a void * is not valid in C. void *fp1 = foo; // invalid int (*fp2)() = foo; // valid int (*fp3)() = &foo; //