函数指针变量作为函数形参

学习了函数指针变量之后,我们可以把一个函数名设置给函数指针变量,再由函数指针变量来调用该函数名。那么,在定义函数的时候,函数的形参变量可以接收实参变量传递过来的数据。所以,函数指针变量是一种变量类型,也可以作为函数的形参变量。程序测试例子如下:

函数指针变量作为函数形参

 

程序运行结果如下:

函数指针变量作为函数形参

 

可以看到,函数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函数。