A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wangjunjun 初级黑马   /  2014-7-27 14:20  /  1066 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

/*=====================================
                    函数指针做函数参数
当函数指针 做为函数的参数,传递给一个被调用函数,
被调用函数就可以通过这个指针调用外部的函数,这就形成了回调
*/
#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);
}

1 个回复

倒序浏览
学习了。。。顶起。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马