It will print come come
At first main() starts executing.Firstly int abc() declaration inside main().Then abc() is call by value, but it will not give any effect in printing. (Because call by value will just create problem when we need function to return value in main(), Here no need to returning any value in main() ).So, abc() will just print come after the first call,
In line 6 when the 2nd (*abc)() called, it is calling by pointer. So, when (*abc)() called abc() function, first one is pointer to abc() function definition. So, here another come will be printed.
The function name is the address of the function and it can be assigned to a function pointer. In the given code
(*abc)=abc
is similar to write int *x=&y
We can also write a new code by pointer to a function (for better understanding) like this which shows (*abc)(). function just a pointer to another integer function.
#include<stdio.h>
int X();
int main()
{
int (*abc)();
int X();
abc=X;
(*abc)();
}
int X()
{ printf("come");}
So, final answer will be come come
https://www.quora.com/What-is-the-difference-between-function-pointer-and-pointer-to-a-function
https://denniskubes.com/2013/03/22/basics-of-function-pointers-in-c/