这是一个无效指针吗?铸件?它在做什么?

时间:2011-12-07 21:24:35

标签: c declaration void

我是C语言和指针的新手,我对此函数声明感到困惑:

void someFunction(int (*)(const void *, const void *));

任何人都可以用非专业人的术语解释这是做什么的以及它是如何运作的?

5 个答案:

答案 0 :(得分:3)

这是一个函数的原型:

  

指向函数的指针,该函数将const void*const void*作为参数并返回int

作为参数,并返回void

答案 1 :(得分:2)

它声明了一个函数,该函数将另一个函数作为其参数,并且不返回任何函数。另一个函数将声明为

int otherfunction( const void *, const void * );

你会像这样调用somefunction():

somefunction( otherfunction );

答案 2 :(得分:0)

这是一个具有单个参数的函数。该参数是一个指向函数的指针,该函数返回一个int并将这两个void指针带到常量数据参数。

答案 3 :(得分:0)

这是一个以function pointer为参数的函数声明。在最基本的形式中,它看起来像这样:

void someFunction(argument_type);

其中argument_typeint (*)(const void *, const void *),可以将其描述为“指向带有两个const void *参数的函数的指针,并返回一个int”。即任何具有以下声明的函数:

int foo(const void *, const void *);

举例说明:

int foo_one(const void * x, const void * y) { ... }
int foo_two(const void * x, const void * y) { ... }

void someFunction(int (*)(const void *, const void *) function_ptr)
{
    const void * x = NULL;
    const void * y = NULL;
    int result;
    result = (*function_ptr)(x, y); // calls the function that was passed in
}

int main()
{
    someFunction(foo_one);
    someFunction(foo_two);
    return 0;
}

答案 4 :(得分:0)

Check this在处理复杂的声明时非常有用。