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;
}
Infinite loop
Hi
Hello Hi
Error
Answer: Option
Explanation:
No answer description is available. Let's discuss.
Discussion:
33 comments Page 2 of 4.

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.

Robin said:   1 decade ago
If we are not using the address of main function then what is the need for passing it?

Asha said:   1 decade ago
What is the meaning of fun(main) ?

XYZ said:   1 decade ago
Can we write like these :fun(main) ?

Is it valid? How?

Shravana said:   1 decade ago
Sorry guys. I can't understand the line: int fun(int(*p)()). Can anyone explain it?

Radhika said:   1 decade ago
We can access the variable of function. I think that is the advantage of passing a function as argument to another function.

Tinky said:   1 decade ago
Adding to @Raju comment:
If I pass any arguments on the calling functions then how will the function work and what is the use of it?

Passing a variable (by value or reference) has practical implementations in Projects, but what is the use of passing a function? Can we access the variable of function if we pass them as argument?

Thanks in advance,

Raju said:   1 decade ago
If I passs any arguments on calling function then how will the function work.

Jhunu said:   1 decade ago
Thanks govind.

Govind said:   1 decade ago
Hi all,

For those who are thinking what is the use of passing pointer to the main function.

Well, please don't confuse your self.

The function 'int fun (int (*p)())' is a function which takes a function pointer as an argument and returns an integer. And '*p' is a pointer to such a function which takes no argument but return int. Just like our main function.

Now, when the programme starts, main will call fun passing the address of main function. But in the function 'fun' we are not using the address of the main at all. We are just passing it.

So in fun it will only print 'Hello' and return to the calling function where it prints 'Hi' and terminates.

I hope this helps.

Thanks.
(1)


Post your comments here:

Your comments will be displayed after verification.