C Programming - Functions - Discussion
Discussion Forum : Functions - Find Output of Program (Q.No. 18)
18.
What will be the output of the program?
#include<stdio.h>
int fun(int(*)());
int main()
{
fun(main);
printf("Hi\n");
return 0;
}
int fun(int (*p)())
{
printf("Hello ");
return 0;
}
Discussion:
33 comments Page 3 of 4.
Asha said:
1 decade ago
What is the meaning of fun(main) ?
Robin said:
1 decade ago
If we are not using the address of main function then what is the need for passing it?
SSFD said:
1 decade ago
The address of main was passed just to complicate things and test whether you can understand the concept or not. In actual program none is going to do so.
Govind said:
9 years ago
Please, can anyone explain fun(main) will not go for infinite?
Aritra said:
9 years ago
@Govind.
Your explanations are really helpful. Thanks a lot.
Your explanations are really helpful. Thanks a lot.
Robert said:
9 years ago
Both fun and main are returning integers data types.
int(*p)() = a pointer to a function
Since we can treat a function name like a pointer holding its address so we can access it :
int(*p)() = main (where remember int(*p)() is a pointer to a function and main is also a pointer to the address of function main)
The "main" the argument of the fun is not used in any statement here, thereby it goes with the execution of fun() => the body of the fun will be executed untouched => prints Hello => gives back control to the main function via return 0.
In the main function, after the body of fun() got executed and it returns => prints Hi and exits => answer Hello Hi.
int(*p)() = a pointer to a function
Since we can treat a function name like a pointer holding its address so we can access it :
int(*p)() = main (where remember int(*p)() is a pointer to a function and main is also a pointer to the address of function main)
The "main" the argument of the fun is not used in any statement here, thereby it goes with the execution of fun() => the body of the fun will be executed untouched => prints Hello => gives back control to the main function via return 0.
In the main function, after the body of fun() got executed and it returns => prints Hi and exits => answer Hello Hi.
Niharika said:
9 years ago
As main call go there will recursion and no output.
Karthik said:
8 years ago
Why the infinite loop not exist when main was used?
Nagu said:
8 years ago
Why the infinite loop not exist when main was used?
The infinite loop does not exist because of the sub-function not recursive function so not infinite loop exists.
The sub-function print "hello" then come to the main function. Then print "hi" end the program.
So not confusing the pointer argument that only pass main program address that not used in sub-function.
Thanks.
The infinite loop does not exist because of the sub-function not recursive function so not infinite loop exists.
The sub-function print "hello" then come to the main function. Then print "hi" end the program.
So not confusing the pointer argument that only pass main program address that not used in sub-function.
Thanks.
Amruta said:
8 years ago
int (*p) () p is a function pointer which should point to a function taking no args and returning int.
Post your comments here:
Quick links
Quantitative Aptitude
Verbal (English)
Reasoning
Programming
Interview
Placement Papers