C++(指针函数、函数指针)



在C++中,指针函数和函数指针是两个不同的概念,尽管它们的名字非常相似。以下是详细的介绍和区别:



1. 指针函数

指针函数(Pointer to a function)是返回类型为指针的函数。

它的返回值是一个指向某种数据类型的指针。以下是一个示例:

int* getPointer(int value) {
    int* ptr = new int(value);
    return ptr;
}

在这个例子中,getPointer 函数返回一个指向整数的指针。你可以这样使用它:

int* ptr = getPointer(5);
std::cout << *ptr << std::endl;  // 输出 5
delete ptr;  // 记得删除分配的内存


2. 函数指针

函数指针(Pointer to a function)是指向函数的指针。

它可以用来调用一个函数或者将一个函数作为参数传递给另一个函数。定义函数指针时,需要指定它所指向的函数的返回类型和参数类型。以下是一个示例:

int add(int a, int b) {
    return a + b;
}

int (*funcPtr)(int, int);

int main() {
    funcPtr = &add;  // 将函数指针指向 add 函数
    std::cout << funcPtr(2, 3) << std::endl;  // 输出 5
    return 0;
}

在这个例子中,我们定义了一个函数指针 funcPtr,它指向 add 函数,并通过函数指针调用了 add 函数。



3. 区别总结

  1. 定义方式不同

    • 指针函数:返回值是一个指针的函数。例如 int* getPointer(int value)
    • 函数指针:指向函数的指针。例如 int (*funcPtr)(int, int)
  2. 使用方式不同

    • 指针函数:调用时返回一个指针,可以用来指向某个数据类型的实例。
    • 函数指针:可以用来调用所指向的函数,也可以作为参数传递给其他函数。
  3. 功能不同

    • 指针函数:用于返回动态分配的内存或者其他需要返回指针的场景。
    • 函数指针:用于函数回调、动态绑定、实现策略模式等。

通过这两个概念的比较,可以更清楚地理解它们各自的用途和使用场景。



posted @ 2024-07-19 10:57  做梦当财神  阅读(2)  评论(0编辑  收藏  举报