黑马程序员技术交流社区

标题: 函数指针做函数参数的简单实例 [打印本页]

作者: wangjunjun    时间: 2014-7-27 14:20
标题: 函数指针做函数参数的简单实例
/*=====================================
                    函数指针做函数参数
当函数指针 做为函数的参数,传递给一个被调用函数,
被调用函数就可以通过这个指针调用外部的函数,这就形成了回调
*/
#include "string.h"
#include "stdio.h"
#include "stdlib.h"

//子任务写任务的人
int add(int a, int b)
{
        int c ;
        c = a + b;
        printf("func add:%d \n", c);
        return c;
}

int add2(int a, int b)
{
        int c ;
        c = a + b;
        printf("func add:%d \n", c);
        return c;
}

//调用任务的人
int MyOP(int (*MyAdd)(int, int))
{
        //执行add函数调用有2种方法
        add(1, 2);

        MyAdd(3, 4);

        return 0;
}
//申明一个函数指针类型。。。
typedef int(*PMyFuncType)(int , int);
//函数指针做函数参数的本质。
//1)不光是把函数入口地址给传送给被调用函数。。
//2)同时,函数类型,也做了一个接口的约定。。。。。。(任务类型的约定)
//反映到代码上。。。函数三要素 (参数、返回值)统统的做了一个约定。。。。
//这个就函数指针做函数参数的核心思想。。。
int MyOP2(PMyFuncType pMyFuncType)
{
        //执行add函数调用有2种方法
        add(1, 2);

        pMyFuncType(3, 4);

        return 0;
}

//调用任务的人,和写任务的人分开了。。。。。。
void main()
{
        //定义一个指针变量,函数指针变量
        int (*pAdd)(int , int);
        //把函数的入口地址复制给。。。。pAdd
        pAdd = add;

        //调用MyOP,要求传送一个函数指针类型。。的变量。。。
        //MyOP(pAdd);
        MyOP2(add2);
}
作者: 黄莉萍    时间: 2014-7-27 16:19
学习了。。。顶起。。。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2