回调函数

来源:互联网 发布:java解压缩zip文件 编辑:程序博客网 时间:2024/05/22 16:24
//#include<stdio.h>
// 方法指针的格式为:int (*ptr)(char *p) 即:返回值(指针名)(参数列表)
//typedef int (*CallBackFun)(char *p); // 为回调函数命名,类型命名为 CallBackFun,参数为char *p
//int Afun(char *p) {    // 方法 Afun,格式符合 CallBackFun 的格式,因此可以看作是一个 CallBackFun
//    printf("Afun 回调打印出字符%s!\n", p);
//    return 0;
//}
//int Cfun(char *p) {    // 方法 Bfun,格式符合 CallBackFun 的格式,因此可以看作是一个 CallBackFun
//    printf("Cfun 回调打印:%s, Nice to meet you!\n", p);
//    return 0;
//}
//int call(CallBackFun pCallBack, char *p) { // 执行回调函数,方式一:通过命名方式
//    printf("call 直接打印出字符%s!\n", p);
//    pCallBack(p);
//    return 0;
//}
//// int call2(char *p, int (*ptr)(char *p))
//int call2(char *p, int (*ptr)()) { // 执行回调函数,方式二:直接通过方法指针
//    printf("==============\n", p);
//    (*ptr)(p);
//}
//int call3(char *p, CallBackFun pCallBack){ // 执行回调函数,方式一:通过命名方式
//    printf("--------------\n", p);
//    pCallBack(p);
//}
//int main() {
//    char *p = "hello";
//    call(Afun, p);
//    call(Cfun, p);
//    call2(p, Afun);
//    call2(p, Cfun);
//    call3(p, Afun);
//    call3(p, Cfun);
//    // int i = getchar();
//    // printf("Input: %c \n", i);
//    return 0;
//}
#include <stdio.h>
#include <iostream>
int (*fun)(char *p);
typedef int (*Callback)(char *p);
int Afun(char *p)
{
    std::cout<<"1111";
    return 0;
}
int call1(char *p, /*int (*fun)(char *p)*/Callback fun)
{
    fun(p);
    return 0;
}
int main()
{
    char *p = "hell";
    call1(p,Afun);
    return 0;
}
0 0