欧美大屁股bbbbxxxx,狼人大香伊蕉国产www亚洲,男ji大巴进入女人的视频小说,男人把ji大巴放进女人免费视频,免费情侣作爱视频

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

C語言

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

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

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

 在C語言中一般用typedef來為回調(diào)函數(shù)定義別名(參數(shù)名)。 別名通過宏定義typedef來實(shí)現(xiàn),不是簡(jiǎn)單的宏替換。可以用作同時(shí)聲明指針型的多個(gè)對(duì)象。

比如:

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

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

先看一個(gè)回調(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 的格式,因此可以看作是一個(gè) CallBackFun  
int Afun(char *p)
{
    printf("Afun 回調(diào)打印出字符%s!\n", p);  
    return 0;
}

// 方法 Cfun,格式符合 CallBackFun 的格式,因此可以看作是一個(gè) 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 *)) 同時(shí)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;
}
再看一個(gè)回調(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ī)定,實(shí)現(xiàn)者(hello,count)就是一個(gè)void 指針,實(shí)現(xiàn)者只負(fù)責(zé)將這個(gè)指針轉(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ù)實(shí)例

本文地址:http://mengdiqiu.com.cn/a1/Cyuyan/3699.html

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

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

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

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