typedef int(* pf)需要解释

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

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

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

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

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

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

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

 #include  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; } 
 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]类型的替代名称。 在此示例中,新名称也出现在声明的“中间”。

它是一个函数指针原型。 然后,您可以将函数声明为参数,如下所示:

 void RegisterCallback(pf your_callback_func); 

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

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

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

typedef作用如下:

使用known types定义unknown type known types

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