雷火电竞-中国电竞赛事及体育赛事平台

歡迎來到入門教程網(wǎng)!

C語言

當(dāng)前位置:主頁 > 軟件編程 > C語言 >

C語言中的回調(diào)函數(shù)實例

來源:本站原創(chuàng)|時間:2020-01-10|欄目:C語言|點(diǎn)擊:

 在C語言中一般用typedef來為回調(diào)函數(shù)定義別名(參數(shù)名)。 別名通過宏定義typedef來實現(xiàn),不是簡單的宏替換??梢杂米魍瑫r聲明指針型的多個對象。

比如:

復(fù)制代碼 代碼如下:

char *pa,pb;//pa是一個char型指針,但pb是一個char型字符。我們可以這樣來實現(xiàn)
typedef char* PCHAR;
PCHAR pa,pb;//pa和pb都是char型指針

先看一個回調(diào)函數(shù)的例子:
復(fù)制代碼 代碼如下:

#include<stdio.h>

//方法指針的格式為:int (*ptr)(char *p) 即:返回值(指針名)(參數(shù)列表)
typedef int (*CallBackFun)(char *p);    //為回調(diào)函數(shù)命名,類型命名為 CallBackFun,參數(shù)為char *p

//方法 Afun,格式符合 CallBackFun 的格式,因此可以看作是一個 CallBackFun  
int Afun(char *p)
{
    printf("Afun 回調(diào)打印出字符%s!\n", p);  
    return 0;
}

// 方法 Cfun,格式符合 CallBackFun 的格式,因此可以看作是一個 CallBackFun
int Cfun(char *p)
{  
    printf("Cfun 回調(diào)打印:%s, Nice to meet you!\n", p);  
    return 0;
}

// 執(zhí)行回調(diào)函數(shù),方式一:通過命名方式,pCallBack可以看做是CallBackFun的別名
int call(CallBackFun pCallBack, char *p)
{  
    printf("call 直接打印出字符%s!\n", p);  
    pCallBack(p);  
    return 0;
}

// 執(zhí)行回調(diào)函數(shù),方式二:直接通過方法指針   
int call2(char *p, int (*ptr)())  //或者是int call2(char *p, int (*ptr)(char *)) 同時ptr可以任意取名
{
    printf("==============\n", p);   
    (*ptr)(p);
}

int main()
{  
    char *p = "hello";
    call(Afun, p);  
    call(Cfun, p);
    call2(p, Afun);  
    call2(p, Cfun);
    return 0;
}
再看一個回調(diào)函數(shù)的例子:

#include <stdio.h>
typedef void (*callback)(char *);
void repeat(callback function, char *para)
{
    function(para);
    function(para);
}

void hello(char* a)
{
     printf("Hello %s\n",(const char *)a);
}

void count(char *num)
{
     int i;
     for(i=1;i<(int)num;i++)
          printf("%d",i);
     putchar('\n');
}

int main(void)
{
     repeat(hello,"Huangyi");
     repeat(count, (char *)4);
}


本例中回調(diào)函數(shù)的參數(shù)按什么類型解釋由調(diào)用者(repeat)規(guī)定,實現(xiàn)者(hello,count)就是一個void 指針,實現(xiàn)者只負(fù)責(zé)將這個指針轉(zhuǎn)交給回調(diào)函數(shù),而不關(guān)心它到底指向什么數(shù)據(jù)類型。調(diào)用者知道自己傳的參數(shù)是char 型的,那么在自己提供的回調(diào)函數(shù)中就應(yīng)該知道參數(shù)要轉(zhuǎn)換成char *型來解釋。

上一篇:c語言clock函數(shù)使用示例

欄    目:C語言

下一篇:c語言線程終止練習(xí)示例

本文標(biāo)題:C語言中的回調(diào)函數(shù)實例

本文地址:http://www.jygsgssxh.com/a1/Cyuyan/3699.html

網(wǎng)頁制作CMS教程網(wǎng)絡(luò)編程軟件編程腳本語言數(shù)據(jù)庫服務(wù)器

如果侵犯了您的權(quán)利,請與我們聯(lián)系,我們將在24小時內(nèi)進(jìn)行處理、任何非本站因素導(dǎo)致的法律后果,本站均不負(fù)任何責(zé)任。

聯(lián)系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網(wǎng) 版權(quán)所有