5

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;
}

1 Answer 1

13

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.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.