函数指针

CBeginner
立即练习

介绍

函数指针是一种存储函数内存地址的方式,就像变量存储值的内存地址一样。当通过指针调用函数时,这被称为函数指针。

在本实验中,我们将编写一个 C 程序来演示如何使用函数指针。

声明并定义需要指向的函数

在这一步中,我们将声明并定义一个函数,该函数接受两个整数参数且不返回任何值。

#include<stdio.h>

void func(int a, int b)
{
    printf("\n\n a = %d \n", a);
    printf("\n\n b = %d \n", b);
}

声明函数指针

在这一步中,我们将声明一个指向步骤 1 中创建的函数的指针。声明函数指针的语法与声明变量指针的语法类似,但需要指定被指向函数的参数类型和返回类型。

// function pointer
void (*fptr)(int , int);

将函数的地址存储到指针中

在这一步中,我们将把步骤 1 中创建的函数的地址存储到步骤 2 中创建的指针中。

// assign address to function pointer
fptr = func;

使用指针调用函数

在这一步中,我们将使用步骤 2 中创建的函数指针来调用步骤 1 中创建的函数。

// function calling
func(2,3);
fptr(2,3);  // calling a function referring to pointer to a function

编写完整代码

打开 ~/project/ 目录下的 main.c 文件。

#include<stdio.h>

void func(int a, int b)
{
    printf("\n\n a = %d \n", a);
    printf("\n\n b = %d \n", b);
}

int main()
{
    printf("\n\n\t\tLabEx - Best place to learn\n\n\n");

    // function pointer
    void (*fptr)(int , int);

    // assign address to function pointer
    fptr = func;

    // function calling
    func(2,3);
    fptr(2,3);  // calling a function referring to pointer to a function

    printf("\n\n\t\t\tCoding is Fun !\n\n\n");
    return 0;
}

编译并运行代码

要编译代码,请打开终端并输入以下命令:

gcc main.c -o main

要运行程序,请输入以下命令:

./main

总结

在本实验中,我们学习了如何在 C 程序中使用函数指针。我们了解了如何声明和定义需要指向的函数,如何声明函数指针,如何将函数的地址存储到指针中,以及如何使用指针调用函数。使用函数指针可以使复杂的程序更易于编写和理解。