Why the assignment without '&' is compiling in the following code? I compiled the code with GCC 3.4.6. Is it right to assign without &, or this is a "feature" of GCC?
void func() {
}
int main() {
typedef void (*F)();
F f;
f = &func; // the way of assigning pointer to function.
f = func; // this is also working.
(*f)();
return 0;
}
This is perfectly ok. Both statements are totally equivalent. The function lvalue is converted to a pointer to function through a standard conversion. §4.3/1:
An lvalue of function type T can be converted to an rvalue of type “pointer to T.” The result is a pointer to the function.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With