gpt4 book ai didi

c - 指向 C 中函数的指针

转载 作者:行者123 更新时间:2023-12-01 12:55:17 25 4
gpt4 key购买 nike

我觉得我对 C 中的指针有很好的处理能力。大多数情况下,我使用它们将数组传递给函数。

但是我在查看许多不同的代码示例时注意到,请参阅指向函数的指针。我完全不清楚为什么这会有用?是否存在一些典型的实例,其中指向函数模型的指针很方便或必须实现?

最佳答案

经典示例是使用 qsort function 对元素数组进行排序.它的最后一个参数是指向比较两个元素的例程的函数指针,作为空指针传递。

void qsort(void *base,
size_t nmemb,
size_t size,
int(*compar)(const void *, const void *));

在这里使用函数指针是必不可少的,因为排序例程不能足够通用以了解您想要如何比较元素,因此函数指针本质上是排序函数用来让您扩展的“回调”

[编辑] 例如,假设您定义了以下结构:

struct president {
char * fname;
char * lname;
unsigned int number;
};

如果你想按它们的“数字”字段对它们的数组进行排序,你可以实现一个“比较”(比较器)函数,如下所示:

int compare_presidents(const void * v1, const void * v2) {
struct president p1 = * ((struct president *) v1);
struct president p2 = * ((struct president *) v2);
return (p1.number - p2.number); // Compare by number ascending.
}

您可以对这样的结构数组进行排序:

qsort(presidents, num_presidents, sizeof(struct president), compare_presidents);

关于c - 指向 C 中函数的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12373545/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com