大门|大门CS模拟2018 |问题27

考虑以下两个C程序: P1:

null

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 " );
}


以下哪个选项是正确的? (A) P1打印“Geeksquick Geeksquick”,P2打印“Geeksquick Geeksquick” (B) P1打印“Geeksquick Geeksquick”,P2给出编译器错误 (C) P1给出编译器错误,P2打印“Geeksquick Geeksquick” (D) 以上都没有 答复: (C) 说明: P1:程序的唯一问题是 享乐 在分配给ptr之前未声明/定义。下面的程序运行良好,可以打印“Geeksquick Geeksquick Geeksquick”

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:这是一个带有函数指针的简单程序。乐趣被分配给指向演示。所以这两种说法“(*有趣)(;”还有“乐趣”意思是一样的。

选项(C)是正确的。 这个问题的小测验

© 版权声明
THE END
喜欢就支持一下吧
点赞6 分享