通常,我们使用typedef来获取数据类型的备用名称。例如--
typedef long int li; // li can be used now in place of long int但是,下面的类型定义函数做了什么呢?
typedef int (*pf) (int, int);发布于 2013-06-25 11:29:08
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;
}发布于 2013-06-25 11:38:33
typedef long int li;为类型long int指定备用名称li。
以完全相同的方式
typedef int (*pf) (int, int);为类型int (*) (int, int)指定备用名称pf。这就是它的全部。
正如您可能注意到的,typedef声明遵循与变量声明相同的语法。唯一的区别是新的变量名被新的类型名替换。因此,根据C声明语法,当涉及数组或函数类型时,声明的名称可能出现在声明符的“中间”。
再举一个例子
typedef int A[10];将A声明为类型int [10]的备用名称。在本例中,新名称也出现在声明的“中间”。
发布于 2013-06-25 11:29:11
它是一个函数指针原型。然后,您可以将函数声明为参数,如下所示:
void RegisterCallback(pf your_callback_func);然后,您可以调用作为函数ptr传递的函数:
...
your_callback_func(i, j);
...https://stackoverflow.com/questions/17288678
复制相似问题