c 函数指针

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;

}

猜你喜欢

转载自blog.csdn.net/qq_32095699/article/details/106742775