在上一篇中 ,我们学习了函数与二级指针 ,函数和java中的方法类似 ,只是缺少了访问控制符 ,二级指针也就是指针的指针 ,指针里面存储的是指针的地址 ,可以通过*操作符不断往上追溯 ,然后通过内存地址操作内存空间 。
当我们定义一个函数的时候 ,这个函数也会像变量一样 ,会有一个内存地址 ,我们也可以将函数定义成为一个函数指针 ,但函数不同于变量 ,变量存储的是固定的值 ,而函数指针存储的是函数的内存地址 。下面我就用一个示例来说明:
由上图我们可以看出 ,我们的函数指针 ,通过jmp指令跳转到另一个地址上 ,下面我来看看message的地址里面是什么:
我们看到通过函数指针里面存储的是一个函数的地址 ,然后通过一个jmp指令调到我们的函数定义执行 。
通过传入函数地址 ,就可以调用函数进行运算 ,我们只要按照传入的参数和返回值 ,写我们自己的函数 ,通过这个方法 ,我们就可以统一的实现我们函数的功能 。下面我们来写一个回调函数:
请求地址:.zhuyongit,正在请求网络....网络请求回调请求到的数据:我是请求的网络数据 ,落花有意随流水 ,流水无情恋落花
我们模拟了网络请求的常见封装 ,使用一个回调函数来接收我们请求回来的数据 。函数指针很强大 ,我们可以直接传入函数名称 ,再另一个函数里面执行我们传入的函数 ,如果是在java里面 ,我还需要传入一个对象 ,再通过对象来调用方法 ,在C语言里面 ,直接通过函数指针就可以搞定
推荐: