GATE | GATE CS Mock 2018 | Question 27
Consider following two C – program :
P1 :
int main()
{
int (*ptr)( int ) = fun;
(*ptr)(3);
return 0;
}
int fun( int n)
{
for (;n > 0; n--)
printf ( "GeeksQuiz " );
return 0;
}
|
P2 :
int main()
{
void demo();
void (*fun)();
fun = demo;
(*fun)();
fun();
return 0;
}
void demo()
{
printf ( "GeeksQuiz " );
}
|
Which of the following option is correct?
(A) P1 printed “GeeksQuiz GeeksQuiz” and P2 printed “GeeksQuiz GeeksQuiz”
(B) P1 printed “GeeksQuiz GeeksQuiz” and P2 gives compiler error
(C) P1 gives compiler error and P2 printed “GeeksQuiz GeeksQuiz”
(D) None of the above
Answer: (C)
Explanation: P1 : The only problem with program is fun is not declared/defined before it is assigned to ptr. The following program works fine and prints “GeeksQuiz GeeksQuiz GeeksQuiz ”
int fun(int n);
int main()
{
// ptr is a pointer to function fun()
int (*ptr)(int ) = fun;
// fun() called using pointer
(*ptr)(3);
return 0;
}
int fun(int n)
{
for(;n > 0; n--)
printf("GeeksQuiz ");
}
P2 : This is a simple program with function pointers. fun is assigned to point to demo. So the two statements “(*fun)();” and “fun();” mean the same thing.
Option (C) is correct.
Quiz of this Question
Last Updated :
10 Jan, 2018
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment...