C语言 函数指针

在C 编程语言中,我们可以有一个概念,称为指向函数的指针。在本教程中,我们将学习如何声明函数指针以及如何使用此指针调用函数。要理解这个概念,你应该具备函数指针的基本知识。

如何声明函数指针?

function_return_type(*Pointer_name)(function argument list)

例如:

double  (*p2f)(double, char)

这里double是函数的返回类型,p2f是函数指针的名称,(double, char)是这个函数的参数列表。这意味着此函数的第一个参数是double类型,第二个参数是char类型。

让我们借助一个例子来理解这一点:这里我们有一个函数sum,它计算两个数字的总和并返回总和。我们创建了一个指向此函数的指针f2p,我们使用此函数指针f2p调用该函数。

int sum (int num1, int num2)
{
    return num1+num2;
}
int main()
{

    /* The following two lines can also be written in a single
     * statement like this: void (*fun_ptr)(int) = &fun;
     */
    int (*f2p) (int, int);
    f2p = sum;
    //Calling function using function pointer
    int op1 = f2p(10, 13);

    //Calling function in normal way using function name
    int op2 = sum(10, 13);

    printf("Output1: Call using function pointer: %d",op1);
    printf("\nOutput2: Call using function name: %d", op2);

    return 0;
}

输出:

Output1: Call using function pointer: 23
Output2: Call using function name: 23

关于函数指针的一些要点:

  1. 如注释中所述,您可以在单个语句中声明一个函数指针并为其赋值函数,如下所示:
void (*fun_ptr)(int) = &fun;
  1. 您甚至可以从此语句中删除&符号,因为单独的函数名称表示函数地址。这意味着上面的语句也可以这样写:
void (*fun_ptr)(int) = fun;

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程