correct way to assign function pointer

c, function-pointers

Solution

`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; // valid

(These are actually declarations but the constraints of the assignment operator apply.)

Problem

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?

Original source

Related problems