考虑以下两个C –程序: 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 ");
}
以下哪个选项是正确的?
(A) P1打印“ GeeksQuiz GeeksQuiz”,P2打印“ GeeksQuiz GeeksQuiz”
(B) P1打印“ GeeksQuiz GeeksQuiz”,而P2给出编译器错误
(C) P1给出编译器错误,P2打印“ GeeksQuiz GeeksQuiz”
(D)以上都不是答案: (C)
说明: P1:唯一有趣的程序问题是在将其分配给ptr之前未声明/定义。以下程序可以正常运行并打印“ 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:这是一个带有函数指针的简单程序。乐趣被分配为指向演示。因此,这两个语句“(* fun)();”和乐趣();”意思是一样的。
选项(C)是正确的。这个问题的测验