将函数调用为fun()和fun之间有什么区别?

时间:2012-05-28 08:36:28

标签: c function

我遇到了一段代码,如下所示

qsort(array, 10, sizeof(int), sort);

这里排序又是一个功能。但我总是认为任何被调用的函数应该在函数名后面有()或者我错过了什么。

我只是想知道这将如何工作以及调用这些函数的区别是什么。谢谢!

4 个答案:

答案 0 :(得分:2)

qsort(array, 10, sizeof(int), sort);

这会传递一个指向函数“sort”的指针,以便函数“qsort”可以调用此函数。

答案 1 :(得分:2)

该函数未被调用,它作为函数指针传递。 see Function Pointers in C and C++

答案 2 :(得分:1)

您正在将函数sort的指针传递给函数qsort,以便qsort可以将该函数用作比较函数。

正确的语法应该在&之前包含sort(因为sort是函数,而不是指针,所以我们需要引用它),但编译器“添加”它无论如何,对你而言。

答案 3 :(得分:1)

如果查看C语法(例如在C标准中),您会发现有一个运算符写为(),它是函数调用运算符。它类似于数组下标运算符 [],因为它应用于标识符,在本例中是函数的名称。如果函数的标识符未被函数调用操作符跟随,则标识符表示该函数的指针。所以现在很清楚,qsort的最后一个arg是什么:指向比较函数的指针。每当需要比较两个元素时,它就会调用最后一个arg指向的函数。

示例中的sort函数称为回调函数,qsort将其回调(多次,使用不同的参数)。

相关问题