函数指针变量作为函数形参
学习了函数指针变量之后,我们可以把一个函数名设置给函数指针变量,再由函数指针变量来调用该函数名。那么,在定义函数的时候,函数的形参变量可以接收实参变量传递过来的数据。所以,函数指针变量是一种变量类型,也可以作为函数的形参变量。程序测试例子如下:
程序运行结果如下:
可以看到,函数func1的定义如下:
void func1(void (*pfunc)(int))
其中形参的定义是
void (*pfunc)(int)
此时,这个形参变量就是一个函数指针变量。那么,在调用func1函数的时候,必须给形参变量赋值一个函数地址。而且根据形参变量的定义,该函数指针的返回值类型是void,形参列表是接收一个int类型的变量。这个格式与func函数的定义格式一致,所以,可以把func函数设置给func1函数的形参变量。那么,调用func1函数的形式如下:
func1(func);
此时,把func函数名作为实参变量,传递给func1函数的形参pfunc函数指针变量,相当于:
pfunc = func;
所以,func1函数的形参函数指针变量pfunc就得到func函数名的值,指向func函数在内存块在首地址。那么,就可以通过pfunc函数指针变量调用它所指向的func函数。