pho*_*nix 14 c typedef function-pointers
通常,我们使用typedef
获取数据类型的备用名称.例如 -
typedef long int li; // li can be used now in place of long int
Run Code Online (Sandbox Code Playgroud)
但是,下面的typedef做了什么?
typedef int (*pf) (int, int);
Run Code Online (Sandbox Code Playgroud)
Yu *_*Hao 26
typedef int (*pf) (int, int);
Run Code Online (Sandbox Code Playgroud)
这意味着使用该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;
}
Run Code Online (Sandbox Code Playgroud)
typedef long int li;
Run Code Online (Sandbox Code Playgroud)
指定替代名称li
以进行输入long int
.
以完全相同的方式
typedef int (*pf) (int, int);
Run Code Online (Sandbox Code Playgroud)
指定替代名称pf
以进行输入int (*) (int, int)
.这就是它的全部.
您可能已经注意到,typedef
声明遵循与变量声明相同的语法.唯一的区别是新变量名称被新类型名称替换.因此,根据C声明语法,当涉及数组或函数类型时,声明的名称可能出现在声明符的"中间".
再举一个例子
typedef int A[10];
Run Code Online (Sandbox Code Playgroud)
声明A
为类型的替代名称int [10]
.在此示例中,新名称也出现在声明的"中间".