legongju.com
我们一直在努力
2025-01-10 23:29 | 星期五

如何编写C语言自定义比较函数

在C语言中,自定义比较函数通常用于排序或查找算法

#include
#include 

// 自定义比较函数
int compare(const void *a, const void *b) {
    int num1 = *((int *)a);
    int num2 = *((int *)b);

    if (num1 > num2) {
        return 1;
    } else if (num1 < num2) {
        return -1;
    } else {
        return 0;
    }
}

int main() {
    int arr[] = {5, 3, 8, 4, 2};
    int n = sizeof(arr) / sizeof(arr[0]);

    // 使用自定义比较函数对数组进行排序
    qsort(arr, n, sizeof(int), compare);

    printf("Sorted array: \n");
    for (int i = 0; i < n; i++) {
        printf("%d ", arr[i]);
    }

    return 0;
}

在这个示例中,我们创建了一个名为compare的自定义比较函数。该函数接受两个指针参数(ab),并将它们分别转换为int类型的指针。然后,我们将这些指针解引用以获取实际的整数值,并根据它们的大小返回相应的整数值(1、-1或0)。

main函数中,我们创建了一个整数数组arr,并使用qsort函数对其进行排序。qsort函数需要一个比较函数作为参数,因此我们将自定义的compare函数传递给它。最后,我们打印出排序后的数组。

未经允许不得转载 » 本文链接:https://www.legongju.com/article/100368.html

相关推荐

  • c语言getch怎么用

    c语言getch怎么用

    getch() 是一个来自 头文件的函数,它用于从控制台读取一个字符,但不会将其回显到屏幕上
    以下是一个简单的示例,展示了如何使用 getch() 函数:
    #inc...

  • c语言怎么逆序输出字符串

    c语言怎么逆序输出字符串

    在C语言中,要逆序输出字符串,可以使用以下方法: 使用双指针法: #include
    #include void reverse_string(char *str) { int len = strlen(str); char *st...

  • c语言怎么求对数

    c语言怎么求对数

    在C语言中,可以使用数学库(math.h)中的 log() 和 log10() 函数来计算自然对数(以e为底)和以10为底的对数。下面是一个简单的示例:
    #include
    #inc...

  • c语言模块化通过什么实现

    c语言模块化通过什么实现

    C 语言的模块化是通过头文件(.h 文件)和源文件(.c 文件)来实现的 创建头文件(.h 文件):在这个文件中,你需要声明所有你希望在其他模块中使用的函数、变量...

  • C语言比较函数有哪些及用法

    C语言比较函数有哪些及用法

    在 C 语言中,比较函数通常用于对两个值进行比较,并返回一个表示它们之间关系的整数 == (相等):比较两个值是否相等。如果相等,则返回 1(真),否则返回 0(假...

  • C语言中如何进行字符串比较

    C语言中如何进行字符串比较

    在C语言中,可以使用strcmp()函数来比较两个字符串。这个函数是标准库string.h中的一个函数,用于比较两个以空字符结尾的字符串。
    函数原型:
    int str...

  • 如何在C语言中进行数组元素的比较排序

    如何在C语言中进行数组元素的比较排序

    在C语言中,对数组元素进行比较排序通常使用排序算法,例如冒泡排序、选择排序、插入排序等
    #include void bubble_sort(int arr[], int n) { for (int i = ...

  • C语言中如何处理空指针与野指针的比较

    C语言中如何处理空指针与野指针的比较

    在 C 语言中,空指针和野指针都是指针类型的变量,但它们的用途和含义有所不同。 空指针(NULL pointer):空指针是一个特殊的指针值,表示该指针不指向任何有效...