1. 函数指针: 指向函数代码起始地址的指针.
定义函数指针: 返回类型 (* 指针变量名)(形参列表);
int main(){
int (* pfoo)(int,int);
pfoo = foo;
(*pfoo)(10,20);
}
2. 用typedef定义一个函数指针类型:
typedef 返回类型 (* 类型名称)(形参类型);
typedef int (* PFUNC)(int a,int b); /* 定义了一个函数指针类型PFUNC,可以用它来声明变量 */
int main(){
PFUNC pFunc;
pFunc=foo;
(*pFunc)(10,20);
return 0;
}
3. 源代码
#include
int foo(int a,int b){
printf("a+b=%d",a+b);
return 0;
}
/* 定义函数指针类型 */
typedef int (* PFUNC)(int,int);
int main(){
/* 声明一个函数指针 */
int (* pfoo)(int,int);
/* 声明一个PFUNC类型的变量 */
PFUNC pFunc;
/* 直接调用 */
foo(10,20);
/* 通过函数指针调用 */
pfoo=foo;
(*pfoo)(10,20);
/* 通过新类型的变量调用 */
pFunc=foo;
(*pFunc)(10,20);
return 0;
}
4. 信号处理函数的定义
#include
typedef void (*sighandler_t)(int);
sighandler_t signal (int signo, sighandler_t handler);
其中: sighandler_t是由typedef定义的新类型.
记住: sighandler_t是类型,和int一样是类型.不过它是一个函数指针类型.
阅读(768) | 评论(0) | 转发(1) |