C语言:指针4(超级详细讲解qsort函数使用)

目录

​编辑

回调函数

qsort函数

qsort函数的使用

qsort排序整行

qsort结构体排序

结构体姓名排序(字符串排序)

结构体年龄排序(整行排序)

模拟qsort函数

比较函数

交换函数


回调函数

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

回调函数在指针3的转移表我们就用到了回调函数

回调函数是就一个函数

下面在代码我们可以看到,把add函数的地址传给了p函数,p用函数指针接收命名为x,

然后可以通过x把a和b的数值传过去给add,然后返回值给 r 然后打印

x里存放的是add函数的地址

这就是一个回调函数


qsort函数

下面是冒泡排序,冒泡排序只能排序整形,无法排序浮点和字符还有结构体,我们就

需要用到qsort函数来进行排序

 //冒泡排序
void add(int arr[], int sz)
{
    for (int i = 0; i < sz-1; i++)
    {
        for (int j = 0; j < sz - 1 - i; j++)
        {
            if (arr[j] > arr[j + 1])
            {
                int r = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = r;

            }
        }
    }
 }

int main()
{
    int arr[] = { 2,4,6,8,10,1,3,5,7,9 };
    int sz = sizeof(arr) / sizeof(arr[0]);
    add(arr, sz);
    for (int i = 0; i < sz; i++)
    {
        printf("%d ", arr[i]);
    }

 }

qsort函数的使用

qsort函数我们需要传4个参数(指向数组第1个元素的指针(首元素),元素个数值,元素类型大小,比较函数)

比较函数的参数为什么使用void*类型呢,因为void*可以接收全部参数,,但是比较数值必须要强制类型转换。

比较这2个数值的时候,(第1个值比第2个值大就返回大于

评论 28
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

落叶 

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值