typedef int(* pf)需要解释

时间:2013-06-25 03:27:25

标签: c function-pointers typedef

通常,我们使用typedef来获取数据类型的备用名称。 例如 -

typedef long int li; // li can be used now in place of long int

但是,下面的typedef做了什么?

typedef int (*pf) (int, int);

5 个答案:

答案 0 :(得分:23)

typedef int (*pf) (int, int);

这意味着使用pf类型声明的变量是指向函数的指针,该函数接受两个int参数并返回int

换句话说,你可以这样做:

#include <stdio.h>

typedef int (*pf)(int,int);

int addUp (int a, int b) { return a + b; }

int main(void) {
    pf xyzzy = addUp;
    printf ("%d\n", xyzzy (19, 23));
    return 0;
}

答案 1 :(得分:5)

typedef long int li;

指定替代名称li以输入long int

以完全相同的方式

typedef int (*pf) (int, int);

指定替代名称pf以输入int (*) (int, int)。这一切都有它。

正如您可能已经注意到的那样,typedef声明遵循与变量声明相同的语法。唯一的区别是新变量名称被新类型名称替换。因此,根据C声明语法,当涉及数组或函数类型时,声明的名称可能出现在声明符的“中间”。

另一个例子

typedef int A[10];

A声明为类型int [10]的备用名称。在此示例中,新名称也出现在声明的“中间”。

答案 2 :(得分:0)

这是一个函数指针原型。然后,您可以将函数声明为类似的参数:

void RegisterCallback(pf your_callback_func);

然后你可以调用作为func ptr传递的函数:

...
your_callback_func(i, j);
...

答案 3 :(得分:0)

typedef的名称为pf,它是一个函数指针,它将两个整数作为参数并返回一个整数。

答案 4 :(得分:0)

typedef的作用如下:

使用unknown type定义known types

因此它定义了两个int参数并返回int的函数类型。