C语言函数指针用法
函数指针本质上是指针,它指向一个函数。
例如int (*p)(int);
– 从 p 处开始, 先与指针结合, 说明 p 是一个指针, 然后与()结合, 说明指针指向的是一个函数, 然后再与()里的 int 结合, 说明函数有一个int 型的参数, 再与最外层的 int 结合, 说明函数的返回类型是整型, 所以 p 是一个指向有一个整型参数且返回类型为整型的函数的指针。
给出一个实例能够更好的理解:
#include "stdio.h"void print(void){printf("print\n");}void PRINT(void){printf("PRINT\n");}//定义了一个别名为p0的函数指针typedef void (*p0)(void); //使用时要定义一个变量p0 p;/*******************************************************************/int (*p1)(int c,int d); //等价于int (*p1)(int,int);int add(int a,int b){return a+b;}int main(void){p0 p;p = print;p1 = add;(*p)();//打印printprintf("\n%d\n",(*p1)(1,2));//打印3p = PRINT;(*p)();//打印PRINTreturn 0;}
打印结果:
由此可以看出,函数的函数名就是这个函数的地址,可以将函数地址赋给函数指针,通过函数指针直接调用此函数。