typedef void Sigfunc(int);
Sigfunc *signal(int, Sigfunc *);
解释: 这里的形式和常规的不太一样,在常规的typedef中,更类似于:
typedef double wage; //创建一个叫wage的别名,其实wage就是double的意思
但是在这里,
typedef void Sigfunc(int);
在这里的意思是定义一种指针类型Sigfunc,它是一种指向函数void (int) 的指针,也就是说Sigfunc表示的是这种类型的函数的地址,因为: 函数名不是其类型的一部分,函数的类型只由它的返回值和参数表决定. 因此在这里,我们可以通过Sigfunc来指向不同的类型为void (int)的函数,例如:
#include <stdio.h>
#include <stdlib.h>
int abs(int abs){
if(abs > 0){
return abs;
}
else{
return -abs;
}
}
int main(){
typedef int (*Sigfunc)(int);
Sigfunc my_abs = abs;
printf("%d\n", my_abs(-1));
return 0;
}