首页 > 其他分享 >深⼊理解指针(4)

深⼊理解指针(4)

时间:2024-08-05 18:52:27浏览次数:13  
标签:回调 函数 qsort 理解 pf 排序 指针

1. 回调函数是什么?

2. qsort使⽤举例

3. qsort函数的模拟实现

1. 回调函数是什么?

1. 回调函数是什么?

回调函数就是⼀个通过函数指针调⽤的函数。

如果你把函数的指针(地址)作为参数传递给另⼀个函数,当这个指针被⽤来调⽤其所指向的函数 时,被调⽤的函数就是回调函数。回调函数不是由该函数的实现⽅直接调⽤,⽽是在特定的事件或条 件发⽣时由另外的⼀⽅调⽤的,⽤于对该事件或条件进⾏响应。

当把函数指针(a)的地址传递给(b)函数,当(b)指针用来调用这个(a)函数时。被调用的函数就是回调函数。

这里把Add的地址传给pf,pf相当于指向了Add。调用了这个函数 就是4+5

举例:计算器

当Add传给pf时进行加法;当Sub传给pf进行减法;当Mul传给pf算乘法;当Div传给pf算除法。

2. qsort使⽤举例

冒泡排序:

这是升序的排法。

如果需要降序则只要把   if(arr[j]>arr[j+1])   改成   if(arr[j]<arr[j+1])

但是bubble_sort只能排序整形数组。

而qsort可以排序任意函数

2.1 使⽤qsort函数排序整型数据

qsort基本格式

这里的e1指向一个元素 e2指向另一个元素

void*类型指针不能解引用操作符,也不能+/-整数操作符

使用之前要强制类型转换。

优化代码:

2.2 使⽤qsort排序结构数据

按照年龄排序

按照姓名排序:

2.3改写冒泡排序

3. qsort函数的模拟实现

这里ps->n与(*ps).n一样用处

标签:回调,函数,qsort,理解,pf,排序,指针
From: https://blog.csdn.net/qq_74775863/article/details/140932658

相关文章

  • Kotlin 布尔值教程:深入理解与应用示例
    Kotlin布尔值在编程中,您经常需要一种只能有两个值的数据类型,例如:是/否开/关真/假为此,Kotlin有一种布尔数据类型,可以取true或false值。布尔值布尔类型可以用Boolean关键字声明,并且只能取true或false值:示例valisKotlinFun:Boolean=truevalisFish......
  • Kotlin 布尔值教程:深入理解与应用示例
    Kotlin布尔值在编程中,您经常需要一种只能有两个值的数据类型,例如:是/否开/关真/假为此,Kotlin有一种布尔数据类型,可以取true或false值。布尔值布尔类型可以用Boolean关键字声明,并且只能取true或false值:示例valisKotlinFun:Boolean=truevalisFi......
  • 深入理解 Scikit-Learn 中的 fit, transform 和 fit_transform
    #深入理解Scikit-Learn中的fit,transform和fit_transform在使用Scikit-Learn进行数据处理和机器学习建模时,经常会遇到三个重要的方法:`fit`、`transform`和`fit_transform`。它们是Scikit-Learn中用于数据预处理、特征提取和模型训练的核心方法。本文将详细解释这......
  • C语言指针(3)
    目录一、字符指针变量二、数组指针变量三、⼆维数组传参的本质四、函数指针变量五、typedef关键字六、函数指针数组一、字符指针变量字符指针char*&符号名 符号名,这都是获取的是首元素地址。intmain(){ chara[]="abcdef"; char*pc=&a; *pc='w'; ......
  • C语言指针(1)
    目录一、内存和地址1、生活中的例子2、内存的关系二、指针变量和地址1、&符号,%p占位符2、一个简单的指针代码。3、理解指针4、解引用操作符5、指针变量的大小。三、指针变量类型的意义1、指针解引用的作用2、指针+指针3、指针-指针4、void*指针四、const修饰指......
  • http/1.0、http/1.1、http/2关于复用这块的理解
    一概述http/1.0 请求响应模式,请求发送到服务器,服务器响应结果后连接立马关闭。由于Http1.0底层使用的是TCP。 需要完整的经理TCP三次握手和四次挥手。下次发起请求时重复以上步骤。http/1.1 请求响应模式,可共享链接,但是需要一个请求-响应结束后才能发起另一个请求-响应。默......
  • C++ 指针注意事项总结
    在C++中,指针是一种强大的工具,允许程序员直接访问和操作内存地址。然而,由于指针直接操作内存,错误的使用可能导致程序崩溃、内存泄漏等严重问题。以下是C++指针相关的详细注意事项:1.指针初始化定义指针时务必初始化:未初始化的指针可能指向任意内存地址,称为“野指针”。野指......
  • 使用 Sobel 算子理解梯度组合策略输出
    我尝试实现一个SobelEdge检测器,如下所示:defsobel(img):img=cv2.GaussianBlur(img,(5,5),0)filter_x=np.array([[-1,0,1],[-2,0,2],[-1,0,1]])filter_y=np.array([[-1,-2,-1],......
  • 【Python系列】深入理解 Python 中的 `nonlocal` 关键字
    ......
  • 理解笛卡尔积在数据库查询中的实际应用与优化
    理解笛卡尔积在数据库查询中的实际应用与优化大家好,我是微赚淘客返利系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!笛卡尔积是关系数据库查询中的一个基础概念,它描述了两个表之间所有可能的行组合。尽管它在某些情况下是必要的,但它也可能导致性能问题。本文将详细介绍笛卡......