I am curious how C handle the function name. To be specific, is the function name a pointer to the beginning address of the function body, like array name is? If that is the case, when assign a value to function pointer, why people sometimes apply reference & to the function name like:
int foo(int a, int b);
int (*p_func)(int a, int b) = &foo;
I know that we can directly assign foo to p_func without reference. But it underlying does implicit conversion to retrieve the function pointer and then assign to p_func. So seems like there is difference between function name and function pointer. Then what is it?
Thank you!