Skip to content

[[C]] 好的,下面直接给出如何在 不使用 typedef 的情况下定义一个函数指针的过程。

把本来定义一个函数的过程中的函数名替代为(*func_ptr)就好了

定义函数指针的步骤:

  1. 确定函数签名: 假设你要定义一个指向返回 void,接受一个 int 和一个 char * 参数的函数的指针。

  2. 基本语法

    c 返回类型 (*指针变量名)(参数类型);

  3. 具体例子: 假设有一个返回 void,接受 intchar * 类型参数的函数:

    c void myFunction(int x, char *str) { // 函数体 }

    对应的函数指针声明如下:

    c void (*funcPtr)(int, char *);

    这里:

    • void 是函数的返回类型。
    • (*funcPtr) 表示 funcPtr 是一个指向函数的指针。
    • (int, char *) 表示该函数指针指向的函数接受 intchar * 类型的参数。

4. 使用函数指针调用函数

你可以将指针指向一个符合该签名的函数,然后通过指针调用它。

int main() {
    // 定义函数指针并指向 myFunction
    void (*funcPtr)(int, char *) = myFunction;

    // 使用函数指针调用函数
    funcPtr(42, "Hello");

    return 0;
}

5. 总结

  • 定义一个函数指针时,首先写出函数的返回类型,再写出指针变量名,最后是函数参数类型。
  • 例如,void (*funcPtr)(int, char *) 表示 funcPtr 是一个指向返回 void、接受 intchar * 参数的函数的指针。
  • 你可以通过赋值将函数指针指向实际的函数,并通过指针来调用它。