C语言函数指针,作为函数参数,就是所谓的注册回调函数?
函数指针变量作为函数形参
学习了函数指针变量之后,我们可以把一个函数名设置给函数指针变量,再由函数指针变量来调用该函数名。那么,在定义函数的时候,函数的形参变量可以接收实参变量传递过来的数据。所以,函数指针变量是一种变量类型,也可以作为函数的形参变量。程序测试例子如下:
深入学习,可以交个朋友,工人人人号:韦凯峰linux编程学堂
程序运行结果如下:
深入学习,可以交个朋友,工人人人号:韦凯峰linux编程学堂
可以看到,函数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函数。
总结
本章节我们学习了“程序模块化设计”的知识,重点学习函数的定义和使用。这是一个非常重要的知识点,每一个知识点,读者都需要深入掌握。
每一章节,作者都提供了测试的例子,在录制的视频中,详细讲解每一个例子的代码。所以,建议读者跟着测试的例子,自己敲打代码进行测试,验证、总结出对每一个知识点的理解。
读者要仔细分析,掌握好每一个知识点,然后,自己总结出对该知识点的理解。自己总结出来的知识,理解才深刻,才是自己掌握的知识。