Skip to content
Related Articles

Related Articles

Improve Article
Save Article
Like Article

GATE | GATE CS Mock 2018 | Question 27

  • Difficulty Level : Hard
  • Last Updated : 10 Jan, 2018

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


My Personal Notes arrow_drop_up
Recommended Articles
Page :

Start Your Coding Journey Now!