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 2 of 4.
Kiran said:
1 decade ago
int fun(int(*)());
In this (int(*)()) means:
It is a function pointer which returns ineger datatype.
Here the pointer points main function. Main function return 0.
Sa our sub function argument is zero. Then sub function will execute and print Hello.
After that is goes to next line and print hai.
Then main() will be terminate.
In this (int(*)()) means:
It is a function pointer which returns ineger datatype.
Here the pointer points main function. Main function return 0.
Sa our sub function argument is zero. Then sub function will execute and print Hello.
After that is goes to next line and print hai.
Then main() will be terminate.
Dinesh said:
1 decade ago
It is function pointer. Here we are initializing the funtion pointer to the address of the main during function call. Then enter the body of the function. Print "hello" then closing braces (}) comes, control back to the calling funtion then prinf"hi" so answer is hellohi.
Narendra said:
1 decade ago
Everyone just explaining therotically. Please explain in deep and practically line by line.
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.
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)
Jhunu said:
1 decade ago
Thanks govind.
Raju said:
1 decade ago
If I passs any arguments on calling function then how will the function work.
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,
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,
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.
Shravana said:
1 decade ago
Sorry guys. I can't understand the line: int fun(int(*p)()). Can anyone explain it?
XYZ said:
1 decade ago
Can we write like these :fun(main) ?
Is it valid? How?
Is it valid? How?
Post your comments here:
Quick links
Quantitative Aptitude
Verbal (English)
Reasoning
Programming
Interview
Placement Papers