DD2*_*D24 0 c pointers function
在一本书中,我遇到了以下问题.我面临的问题是,什么是函数指针?它是如何工作的以及它声明的语法是什么.
将错误指向给定代码.
main()
{
int (*p)()=fun;
(*p)();
}
fun()
{
printf("Hi..");
}
Run Code Online (Sandbox Code Playgroud)
我的第一个问题是,下面的代码snipet表示什么?
int (*p)()=fun;
(*p)();
Run Code Online (Sandbox Code Playgroud)
第二个明显的问题是给定代码中的错误是什么.??
请参阅ionela.voinescu的解决方案答案..它与解决方案手册中的内容相同
int (*p)() = fun声明一个指向返回函数的指针int,然后将该函数的地址赋给该fun指针.(*p)()调用任何函数p指向的函数.
代码问题:
fun并且main应该有一个返回类型.您的编译器可能不会要求它并假设它们返回ints,但您应该给它们一个.
您需要在fun上面声明main,或使用原型
而且,(*p)()是不必要的; 你可以使用p().
作为旁注,因为函数指针语法比较丑陋,所以看到typedef是很常见的
typedef int(*IntFunc)();
Run Code Online (Sandbox Code Playgroud)
这将允许您声明和使用p如下:
IntFunc p = fun;
p();
Run Code Online (Sandbox Code Playgroud)