C++学习(一)——C语言知识函数指针

实例:

用C语言中qsort库函数,将一个unsigned int数组按照个位数从小到大进行排序。

1.函数指针定义:

        类型名( *指针变量名)(参数类型1, 参数类型2, …);

         如:int (*pr)(int,char);

2.调用:

        函数指针名(实参表)

        如:pr = myFun;//把自己定义的函数赋值给pr这个函数指针

               pr(x,y);//可以直接用pr调用myFun这个函数

3.C语言中qsort库函数:

void qsort(void *base, int nelem, unsigned int width, int(* pfCompare)(const void *, const void *)

        四个参数:
                数组的起始地址:base
                数组元素个数:nelem
                数组元素大小:width
                排序前后规则:int(* pfCompare)(a, b) //函数指针定义

        返回值包含以下三种情况:
                负整数:a在前,b在后;
                0:哪个参数在前都可以;
                正整数:a在后, b在前。

实例解答:

#include <strio.h>
#include <stdlib.h>
 
int MyCompare(const void * elem1, const void * elem2) 
{
    unsigned int * p1, * p2;        //p1,p2定义为unsigned int类型,所以下面要强制类型转换
    p1 = (unsigned int *) elem1;    // "* elem1" 非法
    p2 = (unsigned int *) elem2;    // "* elem2" 非法
    return (*p1 % 10) - (*p2 % 10)
}
 
#define NUM 5
 
 
int main()
 {
    unsigned int an[NUM] = {8, 123, 11, 10, 4};
    qsort(an, NUM, sizeof(unsigned int), MyCompare);
    for(int i = 0; i < NUM; i++)
    {
        printf("%d", an[i])     // output: 10 11 123 4 8
    }
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值