c - C 中的函数指针错误

标签 c function pointers

<分区>

在一本书中,我遇到了以下问题。 我面临的问题是,什么是函数指针?它是如何工作的,它的声明语法是什么。

指出给定代码中的错误。

main()
{
    int (*p)()=fun;
    (*p)();
}
fun()
{
    printf("Hi..");
}

我的第一个问题是,以下代码片段表示什么?

int (*p)()=fun;
(*p)();

第二个明显的问题是给定代码中的错误是什么..??

引用ionela.voinescu的解答..和solution manual中写的一样..thnx

最佳答案

int (*p)() = fun 声明一个指向返回int 的函数的指针,然后分配函数fun 的地址> 指向那个指针。 (*p)() 调用 p 指向的任何函数。

你的代码有问题:

  1. funmain 应该有一个返回类型。您的编译器可能不需要它并假设它们返回 int,但您仍然应该给它们一个。

  2. 您需要在main 之上声明fun,或者使用prototype

此外,(*p)() 是不必要的;你可以只使用p()

作为旁注,因为函数指针语法相对难看,所以很常见的类型定义如下

typedef int(*IntFunc)();

这将允许您像这样声明和使用 p:

IntFunc p = fun;
p();

关于c - C 中的函数指针错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17678738/

相关文章:

c++ - 当您调用方法/函数时,汇编语言会发生什么?

c++ - 链接列表操作,问题检索数据 c++

c - 数组上的链表分配器

c - 频率分析?凯撒密码C

c - 意外的 free() 行为

mysql - PHP 7 中获取 mysql 结果的函数

C++ 类型 const* p 和类型 const* const p

c - 将 char* 设置为 NULL 段错误

c - 图像边缘周围的高斯模糊 "Discontinuity"

c - 使用指针将值返回给主函数