什么是函数指针?它可以让一个函数像变量一样被传递通过这个指针我们调用了 add 函数并获得了返回结果

什么是函数指针?

在C语言里,函数指针就像是函数的“快捷方式”。它可以让一个函数像变量一样被传递,甚至可以作为另一个函数的返回值。听起来有点复杂,但简单来说,函数指针就是指向函数的指针。

函数指针的定义

函数指针的定义方式是这样的:

返回类型 指针名(参数列表);

比如:

int (funcPtr)(int);

这条语句定义了一个名为 funcPtr 的函数指针,它指向一个接受一个整数参数并返回整数的函数。

怎么用函数指针?

要使用函数指针,你需要先定义一个目标函数,然后创建一个指向这个函数的指针。以下是如何操作的:



int add(int a, int b) {


    return a + b;


}





int main() {


    int (funcPtr)(int, int) = add;


    int result = funcPtr(3, 4);


    return 0;


}


这段代码中,我们定义了一个 add 函数,然后创建了一个指向它的函数指针 funcPtr。通过这个指针,我们调用了 add 函数,并获得了返回结果。

函数指针的本质是什么?

函数指针之所以能工作,是因为在C语言中,每个函数都有一个地址。当我们定义一个函数指针时,我们实际上是在存储这个函数的地址。所以当我们通过函数指针调用函数时,就是在间接调用那个函数。就像这样:



int add(int a, int b) {


    return a + b;


}





int main() {


    int (funcPtr)(int, int) = add;


    int result = (funcPtr)(3, 4); // 这里使用  来解引用函数指针


    return 0;


}


这里的 (funcPtr) 就是在解引用函数指针,告诉编译器我们想要调用它指向的函数。

通过学习函数指针,我们可以在C语言中实现更灵活和强大的编程方式。理解了函数指针的本质和用法,我们的代码会更加模块化和可重用。