【C++】函数指针 & 函数返回一个指针的区别

不同的概念

两者都涉及到指针,但的确是不同的概念

函数指针

  • 函数指针是一个指向函数的指针,它存储了函数的地址;
  • 通过函数指针,可以实现在程序运行时动态地选择调用不同的函数
  • 函数指针通常用于实现回调函数、事件处理和动态、多态性等场景;

给出一个回调函数例子,主功能函数接受另一个回调函数参数:

#include <stdio.h>

// 定义回调函数类型
typedef void (*CallbackFunction)(int);

// 主功能函数,函数体内会调用回调函数
void performOperation(int x, int y, CallbackFunction callback) {
    int result = x + y;
    callback(result);    // 调用回调函数,将结果传递给回调函数
}

// 回调函数,用于处理操作的结果
void printResult(int result) {
    printf("The result is: %d\n", result);
}

int main() {
    int num1 = 10, num2 = 20;
    // 调用 performOperation() 函数,并传递回调函数 printResult()
    performOperation(num1, num2, printResult);
    
    return 0;
}

【回调函数】在调用函数执行完特定的任务后,如果满足一定的条件,就会调用传递的回调函数。这种机制使得函数能够灵活地在运行时决定执行哪些操作,从而增强了程序的灵活性和可扩展性。

函数返回一个指针

意味着函数返回的是一个指针,这个指针指向某个内存位置。

  • 通常情况下,函数返回的指针指向了函数内部动态分配的内存,或者指向了函数外部的某个对象
  • 通过返回指针,函数可以将一些数据结构、动态分配的内存等信息传递给调用者
例如数据结构中链表或者树的实现,需要返回一个指向下一个节点的指针:
struct Node {
    int data;
    struct Node *next;
};

struct Node *createNode(int data) {
    struct Node *newNode = (struct Node *)malloc(sizeof(struct Node));
    newNode->data = data;
    newNode->next = NULL;
    return newNode;
}
  • 7
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值