带你玩转指针——指针进阶(二)

上次我们说到了函数指针,对于函数指针大家还不太清楚的参考,指针进阶(一)http://t.csdn.cn/z5cjM

函数指针数组

数组是存放相同类型的空间,前面我们已经学习了指针数组

int* arr[10] 每个元素是int*

那么我们把函数的地址存放到一个数组中,这个数组我们就称为函数指针数组,函数指针数组怎么书写呢?

一个·函数指针 int(*pa)(int ,int)=函数地址

多个函数指针就是函数指针数组了

上面是通过伪代码的形式呈现,那么在实际应用有·什么用呢,我们举一个例子

设计一个计算器,程序不难

指向函数指针数组的指针

指向函数指针数组的指针也就是一个指针,这个指针 指向 函数指针数组

就如上面的函数指针数组:int(*pa[5])(int ,int ) = { NULL,add,sub,mul,div };

我们怎么写一个指针指向这个函数指针数组

回调函数

回调函数就是一个通过函数指针的调用的函数

如果你把函数的指针(地址)作为参数传递给另外的函数,当这个指针被用来调用其所指向的函数时,我们就说这个是回调函数

库函数中有一个函数qsort

qsort函数的作用是可以进行数据的排序

首先我们要了解qsort函数,通过cplusplus网

看不懂不要紧,下面也有例子

说那么多还是看实例吧

有人说我要从大到小怎么办

将return 里面的两个相减数交换位置就好了

整型的排序我们会了,字符型,结构体的排序呢

那么qsort函数是怎么实现的,我们在之前学过冒泡排序,就是排整型数据的,qsort内部是使用快速排序的,今天我们利用冒泡排序的思想模拟qsort函数

先回忆一下冒泡排序

但是冒泡排序只能排整型,不能排字符型,也不能排结构体

我们设计一个兼容可以排序整型,又可以排字符型和结构体的呢

模拟qsort的思想,利用冒泡的形式

整体代码是上述的,是怎么实现的,我们一步一步剖析

上面是对一个大局部进行剖析,字符型和结构体的大同小异

我们理一理我们设计的my_qsort函数

那么谁是回调函数呢

有概念说,把函数的指针作为参数传递给另外的函数,当这个指针用来调用其所指向的函数的时候,我们就是说这个是回调函数

这样看来我们可以称sort_jud_int函数为回调函数了

回调函数的使用多种多样,结合指针,我们可以玩出多种多样的花样

  • 39
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 33
    评论
指针是C编程语言中非常重要的概念之一,对于初学者来说可能会感到害怕和困惑。但只要理解了指针的原理和用法,就会发现它其实并不可怕。 首先,指针是一个存储变量地址的变量,它可以指向任何数据类型的变量,包括整型、浮点型、字符型等等。我们可以通过指针访问变量的值,也可以通过指针修改变量的值,这是指针的一大优势。 其次,理解指针的应用场景能够帮助我们更好地使用它。比如,当我们需要在函数之间传递大量的数据时,通过传递指针可以提高程序的执行效率。另外,在动态内存分配和释放中,指针也是一个必不可少的工具。 理解指针的用法也是很重要的。首先,我们需要理解指针的声明和初始化。指针的声明使用“类型 * 变量名”的语法,例如 int *ptr; 表示声明了一个指向整型变量的指针指针的初始化可以通过给指针赋值一个变量的地址或者通过取地址符&获取变量的地址。 然后,我们需要了解指针的运算。指针可以进行四种基本的运算:取地址运算符&,取值运算符*,指针加法和指针减法。取地址运算符&用于获取变量的地址,取值运算符*用于获取指针所指向的变量的值。指针加法和指针减法用于指针地址的增加和减少,不同数据类型的指针相加或相减会有不同的结果。 最后,我们需要注意指针的安全性。在使用指针的过程中,需要特别小心避免空指针、野指针等问题的出现,因为这些问题容易引发程序的崩溃或者产生不可预知的结果。 总结来说,指针作为C语言中的重要概念,我们应该尽早学习和掌握。只要理解指针的原理和用法,我们就能够更加灵活地操作内存,提高程序的效率和功能。通过不断的实践和学习,我们可以逐渐摆脱对指针的恐惧,让指针成为我们编程的得力助手。
评论 33
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值