一直对函数指针没有仔细研究,用的也很少,抽空仔细研究了一下,记录一下。
函数指针:指向函数地址的指针。和其他指针类似,也有类型、赋值等相关概念。
下面是写的测试代码:
#include"stdio.h" typedef void (*fn_void_int) (int,int); void temp(int i,int k) { printf("i = %d, k = %d \n", i , k); } void temp2(int i,int k) { printf("i*2 = %d, k*2 = %d \n", i*2 , k*2); } void callTemp(fn_void_int fn, int i, int k) { fn(i,k) ; } int main(void) { /* 最基本的写法 */ void (*f1) (int,int); f1 = temp; f1(1,2); /* 通过typedef定义后的写法 */ fn_void_int f2; f2 =temp ; f2(3,4); /* 把函数指针作为参数传递给其他函数 */ fn_void_int f3; f3 = temp2; callTemp(f3,5,6); return 0; }
输出结果:
i = 1, k = 2
i = 3, k = 4
i*2 = 10, k*2 = 12