当前位置: 首页 > news >正文

函数指针和回调函数 以及指针函数

函数指针(Function Pointer):

  • 定义: 函数指针是指向函数的指针,它存储了函数的地址。函数的二制制代码存放在内存四区中的代码段,函数的地址它在内存中的开始地址。如果把函数的地址作为参数,就可以在函数中灵活的调用其它函数。
  • 用途: 函数指针可以用来在运行时动态选择调用哪个函数,或者将函数作为参数传递给其他函数。

使用函数指针的三个步骤:

        a)声明函数指针;

        b)让函数指针指向函数的地址;

        C)通过函数指针调用函数。

 

// 声明一个函数指针
int (*add)(int, int);// 将函数地址赋给函数指针
add = ∑// 使用函数指针调用函数
int result = add(3, 4);

        回调函数是一种在编程中常见的概念,它是指一个函数作为参数传递给另一个函数,并在特定事件发生时被调用。

void show(void (*pf)()){pf();
}void zs(){cout << "我是大爸爸"<<endl;
}void ls(){cout << "我是小爸爸"<<endl;
}int main(){
show(zs);
show(ls);
}

传参方式1:

void show(void (*pf)(int)){int c =0;pf(c);
}void zs(int a){cout << "我是大爸爸"<<endl;
}void ls(int b){cout << "我是小爸爸"<<endl;
}int main(){
show(zs);
show(ls);
}

传参方式1:

void show(void (*pf)(int),int c){pf(c);
}void zs(int a){cout << "我是大爸爸"<<endl;
}void ls(int b){cout << "我是小爸爸"<<endl;
}int main(){
int c=0;
show(zs,c);
show(ls,c);
}

指针函数

        指针函数是指返回类型为指针的函数。它与一般的函数不同,因为它的返回值是一个指针,而不是基本数据类型或结构体。

指针函数的使用场景可能包括:

  1. 动态内存分配: 返回指向动态分配内存的指针,允许在堆上分配内存。

  2. 返回数组或字符串: 返回指向数组或字符串的指针,这在处理字符串或数组时很有用。

  3. 函数指针返回类型: 在某些情况下,函数指针也可以被认为是一种指针函数。函数指针指向函数而不是数据,但它们的返回类型是指针。

#include <iostream>// 定义一个指针函数,返回整数指针
int* createInteger() {int* ptr = new int; // 在堆上分配内存*ptr = 42;          // 设置指针指向的值return ptr;         // 返回指针
}int main() {// 调用指针函数,得到一个整数指针int* result = createInteger();// 使用指针指向的值std::cout << "Value created by pointer function: " << *result << std::endl;// 记得释放在堆上分配的内存delete result;return 0;
}

http://www.lryc.cn/news/279783.html

相关文章:

  • 京东年度数据报告-2023全年度游戏本十大热门品牌销量(销额)榜单
  • 秒懂百科,C++如此简单丨第十二天:ASCLL码
  • Qt6入门教程 4:Qt Creator常用技巧
  • 阴盘奇门八字排盘马星位置计算方法php代码
  • vue3 使用 jsoneditor
  • 若依前后端分离版使用mybatis-plus实践教程
  • SpringBoot-Dubbo-Zookeeper
  • 华为HCIE课堂笔记第十二章 ICMPv6和NDP协议
  • GNSS科研常用相关网站及资源
  • 进程的创建与回收学习笔记
  • 【CCNet】《CCNet:Criss-Cross Attention for Semantic Segmentation》
  • Qt QSQlite数据库插入字符串中存在单个双引号或单个单引号解决方案
  • Linux系统中的IP地址、主机名、和域名解析
  • soc算法【周末总结】
  • SpringBoot之优化高并发场景下的HttpClient并提升QPS
  • go-zero 如何在任意地方获取yaml中的值
  • C++20结构化绑定应用实例(二百五十六)
  • 改进YOLOv8注意力系列四:结合中心化特征金字塔EVCBlock、大核卷积注意力LKA_Attention、全局注意力MobileViTAttention
  • idea中使用Lombok 失效,@Slf4j 找不到符号的解决办法
  • MySQL修炼手册8:约束与完整性:保证数据的一致性
  • React入门 - 03(初识 React 组件和 JSX)
  • 华为OD机试 - 反射计数(Java JS Python C)
  • Linux系统中使用systemctl命令控制软件的启动和关闭
  • 2024年01月微软更新Bug 已解决 !Explorer.EXE 提示:Windows无法访问指定设备、路径或文件。你可能没有适当的权限访问该项目。
  • Qt/QML编程学习之心得:slider(34)
  • 使用metricbeat 监控多ES集群
  • 阿里云服务器+宝塔 (尝试部署一个最简单的静态页面)
  • 每日一题——LeetCode1160.拼写单词
  • 物联网协议Coap之Core和NetWork简介
  • Java SE入门及基础(10)