考虑以下两个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