首页 > 其他分享 >001,函数指针是一种特殊的指针,它指向的是一个函数地址,可以存储函数并作为参数传递,也可以用于动态绑定和回调函数

001,函数指针是一种特殊的指针,它指向的是一个函数地址,可以存储函数并作为参数传递,也可以用于动态绑定和回调函数

时间:2024-07-07 11:26:06浏览次数:20  
标签:return 函数 int 绑定 001 函数指针 指针

函数指针是一种特殊的指针

001,函数指针是一种特殊的指针,它指向的是一个函数地址,可以存储函数并作为参数传递,也可以用于动态绑定和回调函数

文章目录


前言

在这里插入图片描述

#include <iostream>
using namespace std;
int add(int a, int b){
	return a + b;
}
int sub(int a, int b){
	return a - b;
}
int mul(int a, int b) {
	return a * b;
}
int mdiv(int a, int b) {
	if (b == 0)
		return 0;
	return a / b;
}
int mod(int a, int b) {
	if (b == 0)
		return 0;
	return a % b;
}
int max(int a, int b) {
	if (a>b)
		return a;
	else
		return b;
}
int min(int a, int b) {
	if (a < b)
		return a;
	else
		return b;
}
typedef int INT;
typedef int((*pf)(int a, int b));
int cb(int((*pf)(int a, int b)),int a,int b)
{
	return pf(a, b);
}
int main()
{
	int a = 7;
	INT b = 2;
	cout<<"a = " << a << "\n";
	cout<<"b = " << b << "\n";
	cout << "a+b = " << cb(add, a, b) << "\n";
	cout << "a-b = " << cb(sub, a, b) << "\n";
	cout << "mul = " << cb(mul, a, b) << "\n";
	cout << "div = " << cb(mdiv, a, b) << "\n";
	cout << "mod = " << cb(mod, a, b) << "\n";
	cout << "max = " << cb(max, a, b) << "\n";
	cout << "min = " << cb(min, a, b) << "\n";
	return 0;
}

测试结果
在这里插入图片描述


总结

函数指针是一种特殊的指针,它指向的是一个函数地址,可以存储函数并作为参数传递,也可以用于动态绑定和回调函数。以下是使用函数指针的一些常见场景:
1.回调函数:当需要将某个操作委托给另一个函数执行,而这个操作的结果会影响到当前函数的行为时,函数指针就派上用场了。比如事件处理、异步编程中的完成处理等。
2.泛型编程:通过函数指针,你可以创建一个接受不同类型函数的接口,使得算法能够处理多种类型的输入
3.动态绑定:在运行时确定要调用哪个函数,如C++的虚函数机制中,基类指针可以指向子类的不同实例,这时就会调用正确的函数版本。
4.函数库设计:为了提供灵活性,些高级语言的函数库可能会提供接收函数指针作为参数的功能,用户可以自定义行为。
5.优化性能:在某些特定情况下,直接使用函数指针而不是对象的成员函数可能会提高效率,因为没有额外的类型转换开销。

标签:return,函数,int,绑定,001,函数指针,指针
From: https://blog.csdn.net/zhyjhacker/article/details/140243586

相关文章

  • 常用函数:其他类型函数
    1、聚合函数:group_concat功能:用于在分组时,将指定字段的值进行合并拼接成一个字符串场景:分组聚合、行列转换语法:group_concat([distinct]col[orderbycol][separator分隔符])distinct:对元素的值进行去重orderby:按照某一列的值进行排序separator:用于指定分......
  • 06.函数
    Go语言中的函数是代码组织和复用的基础,函数的定义和调用非常简单明了。下面是Go语言中函数的基础语法和一些关键概念:函数的定义在Go语言中,函数的定义包括函数名、参数列表、返回值类型和函数体。语法格式如下:func函数名(参数列表)返回值类型{函数体} 示......
  • 快速排序的思路及核心函数
    Quick_Sort###思想选取数组段内的任意一个值$x$(可以是左边界值`a[r]`,右边界值`a[l]`,中间值`a[(l+r+1)/2]`)。进行排序,在数组段内,将比$x$小的数都放在$x$的左边,比$x$大的数都放在$x$的右边(双指针)。不断递归处理数组段的左右两段,使得任意一个数的左边都比它小,右边......
  • 数组的键值操作函数学习
    <?php$url='http://chlop.io?www=23233s&timestamp=23232';//&timesXecho'<hr>';echoparse_url($url)['query'];echo'<hr>';echohtmlspecialchars(parse_url($url)['query']);echo......
  • 力扣第7题:整数反转 字符串函数综合运用(C++)
    给你一个32位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。如果反转后整数超过32位的有符号整数的范围 [−231, 231 −1] ,就返回0。假设环境不允许存储64位整数(有符号或无符号)。示例1:输入:x=123输出:321示例2:输入:x=-123输出:-321示例3:......
  • python速通(函数)
    (网页的生成)牛客网的某个网页基本已经写好了,最后一步为了适应手机的尺寸,需要将高度增加一倍。为了适用于多个网页,牛牛希望你能将这个功能定义为一个函数,函数输入网页高度h,输出增加后的结果。defiheight(h):returnh*2h1,h2=map(int,input().split())print(iheight......
  • sizeof 在函数使用中的问题
    使用sizeof来获取数组的大小在某些情况下是可以的,但在涉及到函数参数时可能会有一些问题。使用sizeof获取数组大小当数组在当前作用域内声明时,可以使用sizeof来获取数组的大小。例如:#include<cstdio>intmain(){charbuffer[10];printf("Sizeofb......
  • STM32封装ESP8266一键配置函数:实现AP模式和STA模式切换、服务器与客户端创建
    鱼弦:公众号【红尘灯塔】,CSDN博客专家、内容合伙人、新星导师、全栈领域优质创作者、51CTO(Top红人+专家博主)、github开源爱好者(go-zero源码二次开发、游戏后端架构https://github.com/Peakchen)STM32封装ESP8266一键配置函数:实现AP模式和STA模式切换、服务器与客户端创建......
  • 【三变量联合分布函数copula】利用AIC BIC确定单变量最优拟合函数、利用AIC确定三变量
            ......
  • STM32F1+HAL库+FreeTOTS学习6——临界段代码保护函数&任务调度器的挂起和恢复函数
    STM32F1+HAL库+FreeTOTS学习6——临界段代码保护函数临界段临界段代码保护函数任务调度器的挂起和恢复函数上一期我们学习了FreeRTOS的内核中断管理以及中断屏蔽控制函数,下面我们来学习临界端代码保护函数的使用临界段临界段也叫临界区,指的是必须完整运行完,不能被......