【C/C++】一个实例看 回调函数 / 函数指针 应用与原理

本文通过一个计时需求的例子,深入探讨C/C++中的回调函数和函数指针的原理与应用。介绍了如何利用函数指针实现回调功能,将函数作为参数传递,以满足特定场景的需求,例如在最大子列和问题的计时中。
摘要由CSDN通过智能技术生成

前言:笔者在学习数据结构经典问题“四种方法求解最大子列和”时,遇到了一个需求:计时是重复动作,因此想创建一个可以为算法运行时间计时的函数。由于计时的特殊性(被计时的函数要被掐头又掐尾),因此要设计一个能调用函数的函数。这就涉及到 回调函数 / 函数指针 的应用了(初学C/C++时,不了解回调函数提出的意义,现在因为自己的需求明白了)。

附:最大子列和问题的四种解法为:暴力法O(n3)、不做重复加法O(n2)、二分法O(n log2(n))、在线处理法O(n),详细解析请见笔者的笔记算法实例:最大子列和,实现代码于ds_cou_1_maxSum.cpp

需求分析

#include <time.h>
#include <stdio.h>

#define MAXK 1e5
clock_t start, stop;
double duration;

start = clock();
for (int i = 0; i < MAXK; i++)
{
   
    foo(10, 1.1);
}
stop = clock();
duration = ((double)(stop - start) / CLK_TCK / MAXK);
printf("ticks2 = %f\n", (double)(stop - start));
printf
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值