wwwxxx国产_337p日本欧洲亚洲大胆张筱雨_免费在线看成人av_日本黄色不卡视频_国产精品成熟老女人_99视频一区_亚洲精品97久久中文字幕_免费精品视频在线_亚洲色图欧美视频_欧美一区二三区

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 17563|回復: 3
打印 上一主題 下一主題
收起左側

C語言回調函數熟練---使用方法(構建程序框架方便好用)

[復制鏈接]
跳轉到指定樓層
樓主
ID:71477 發表于 2015-1-1 19:40 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
通俗點不行嗎?啊,不行嗎?老外把國人玩的都不是人了。國人還自己玩自己。非把一個簡單的東西復雜化。叫那么難理解!!窩里斗。。。。。。典型!!!!!!!!
不說那么復雜的,誰是狗屎,豬屎。就說怎么用回調。
使用步驟:
1.寫一個函數A,A里面有一個參數是個指針函數 比如: int shao(int a,int (*Pcall)(void *p))
2.有個指針函數參數,那他要指向一個函數,OK,寫一個符合格式的函數B 比如 int CaoDan(int c)
3.使用A函數吧,參數賦值后,指針指向了一個函數地址,不就調用了嗎 比如 shao(36,CaoDan);
說明:A通過指針調用了B函數,函數執行語句里面,要用到指針才行啊。不然,光指向了。有個屁用啊!!
int shao(int a,int (*Pcall)(void *p))
{
    int PA;
    int PS;
    (*Pcall)(a); //指針函數的參數賦值,就看你了。想賦值誰都行。
    (*Pcall)(PS);
    (*Pcall)(PA);  
}
void main()
{
    shao(3,AFuc);//指向具體函數AFunc首地址
    shao(5,BFuc);
}
完畢,就是這么用的。
簡單說:函數參數里有函數指針,指針指向的是函數地址,不是變量地址。這樣,函數你就可以隨便寫,都可以用這個回調函數當一個參數來調用,多方便。程序通用性就更強了!!!哇哇哇!!!!

//注意:指針函數寫法,*函數名要用括號括起來啊
/****************************************************************************/

簡單舉例: void Callback_shao(int a , int (*diaoba) (int a,int b))//指針函數直接在參數里聲明
              {
                   int can;
(*diaoba)(can,a);//要用這指針函數啊,而且參數要賦值
    (*diaoba)(22,33); //參數要賦值
                (*diaoba)(a,can);//指針函數的參數寫什么,就隨便你了
                  
}
              這個指針參數,到時候指向哪個函數。函數里面執行的,就是哪個函數
        //下面是具體函數
void  nixie(int fan , int cao) //函數1,參數個數符合回調函數的那個指針函數
   {
     里面隨便你啦!!。。。。
}
Void nixiangxie(int  mei  ,int  zhao)//函數2
{
     里面隨便你啦。。。。
}
void main()  //主函數
{
     Callback_shao(1,nixie); //回調時,只寫函數名就行了。指針嘛,類似指向數組首地址寫法
     Callback_shao(324,nixiangxie);
}
/****************************************************************************/
也可以用typedef 自定義,下面使用指針函數就可以直接用函數名了
typdef int
(*diaoba) (int a,int b);
diaoba  PCallA;//重新定義一個函數指針
diaoba  PcallB;
void Callback_shao(int a ,PcallB); //參數里就可以直接寫函數名

主函數里。。。。
void main
{
   Callback_shao(3,nixie);
}

/**************************************************************/


回調函數例子:
#include <stdio.h>
void printWelcome(int len)  //函數實現,回調函數會調用它,要自己先寫好。
{
       printf("Welcom -- %d\n", len);
}
void printGoodbye(int len) //函數實現,回調函數會調用它,要自己先寫好。
{
       printf("Goodbye -- %d\n", len);
}
void callback(int times, void (* print)(int)) //回調函數,有個參數是個函數指針
{
       int i;
       print(i);//指針函數你要用到他,不用它,他回調個屁啊!!
       print(times);//指針函數你要用,不用它,他回調個屁啊!!!
}
void main(void)
{
       callback(10, printWelcome); //傳入具體的函數地址
      callback(10, printGoodbye);//傳入具體的函數地址
       printWelcome(5);
}
/******************************************************************************************************************/
回調函數的寫法,還有幾種,下面的參考

#include<stdio.h>
// 方法指針的格式為:int (*ptr)(char *p) 即:返回值(指針名)(參數列表)
typedef int (*CallBackFun)(char *p); // 為回調函數命名,類型命名為 CallBackFun,參數為char *p 。

程序舉例:
typedef int (*CallBackFun)(char *p); //這是回調函數,自定義成了一個別名CallBackFun
int Afun(char *p)
{
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)  //寫法1,
{    // 執行回調函數,方式一:通過命名方式
printf("call 直接打印出字符%s!\n", p);
pCallBack(p);//指針函數要寫在里面,不用它,回調個屁啊!!!
return 0;
}
/*********************************************************************/
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);   //調用Afun回調函數,傳遞參數*P給Afun函數
call(Cfun, p); //調用Cfun回調函數,傳遞參數*P給Afun函數
call2(p, Afun); //調用Afun回調函數,傳遞參數*P給Afun函數
    call2(p, Cfun); //調用Cfun回調函數,傳遞參數*P給Afun函數
call3(p, Afun);  //調用Afun回調函數,傳遞參數*P給Afun函數
    call3(p, Cfun); //調用Cfun回調函數,傳遞參數*P給Afun函數
// int i = getchar();
// printf("Input: %c \n", i);
return 0;
}
/*********************************************************************/
Linux下的編譯、輸出:
[jhliu@localhost src]$ gcc -o func_callback func_callback.c
[jhliu@localhost src]$ ./func_callback
call 直接打印出字符hello!
Afun 回調打印出字符hello!
==============
call 直接打印出字符hello!
Cfun 回調打印:hello, Nice to meet you!
==============
Afun 回調打印出字符hello!
==============
Cfun 回調打印:hello, Nice to meet you!
--------------
Afun 回調打印出字符hello!
--------------
Cfun 回調打印:hello, Nice to meet you!
[jhliu@localhost src]$
/*****************下面是少占魚測試通過的用法舉例(vc6.0)***********************************/
#include "iostream.h"
#define uint8 unsigned int
typedef void (*halCBack_t) (uint8 keys, uint8 state); //指針函數,注意加了自定義typedef后,下面才能重命名

void KeyCallback ( uint8 keys, uint8 state ); //具體實現函數
void LEDCallback ( uint8 keys, uint8 state ); //具體實現函數
int Ligback( uint8 keys, uint8 state ); //具體實現函數
void HalKeyConfig (uint8 st, halCBack_t cback);//注意指針函數加了typedef后,這里才能當關鍵字聲明
void ShiYong (uint8 ffff, int (*halCBack_t) (uint8 keys, uint8 state));//如果指針函數沒有typedef,要這樣使用
//注意指針函數加了自定義typedef后,這里才能定義,否則報錯
halCBack_t pHalKeyProcessFunction=KeyCallback; //聲明指針函數變量并指向一個具體函數地址

halCBack_t taskCall[]=
{
KeyCallback,
LEDCallback  
}; //指針函數數組

void main()
{
HalKeyConfig( 1, KeyCallback ); //調用該函數,參數里的指針函數指針指向具體函數即可
HalKeyConfig( 2, LEDCallback );  
taskCall[0](11,11);
taskCall[1](22,22);
ShiYong(33,Ligback);
(*pHalKeyProcessFunction)(44,44); //指針函數具體使用
}
void HalKeyConfig (uint8 st, halCBack_t cback)//某個函數,調用指針函數作參數
{
    cback(st,st);
}
void ShiYong (uint8 fa, int (*halCBack_t) (uint8 keys, uint8 state))
{
  (*halCBack_t) (fa, fa);
  cout<<"使用"<<endl;
}
void KeyCallback ( uint8 keys, uint8 state ) //具體實現函數
{
   cout<<"按鍵函數"<<keys<<state<<endl;
   
}

void LEDCallback ( uint8 keys, uint8 state ) //具體實現函數
{
  cout<<"LED函數"<<keys<<state<<endl;
}

int Ligback( uint8 keys, uint8 state ) //具體實現函數
{
  cout<<"Lig函數"<<keys<<state<<endl;
  return 1;
}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏7 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:62890 發表于 2015-1-4 08:48 | 只看該作者
學習了
回復

使用道具 舉報

板凳
ID:476556 發表于 2020-3-18 09:40 | 只看該作者
學習了,簡單粗暴的樓主
回復

使用道具 舉報

地板
ID:89515 發表于 2020-6-1 15:35 來自觸屏版 | 只看該作者
學習了,干貨很好!!!!
回復

使用道具 舉報

5#
無效樓層,該帖已經被刪除
您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
日韩精品手机在线| 99久久99久久精品国产片果冻| 久久久久久久欧美精品| 国产成人综合亚洲网站| 国产精品女人毛片| 欧美一a一片一级一片| 日韩精品免费综合视频在线播放| 久久久久久尹人网香蕉| 成人黄动漫网站免费| 青草网在线观看| 国产精品手机在线观看| 日韩欧美一级视频| 亚洲天堂电影在线观看| xxxx在线播放| 快射av在线播放一区| 久久精品国产福利| 午夜亚洲福利| av高清久久久| 一本不卡影院| 成人国产精品视频| 一本大道久久精品懂色aⅴ| 一本色道久久88精品综合| 国产精品福利无圣光在线一区| 亚洲免费不卡| 亚洲一级Av无码毛片久久精品| 国产 欧美 日韩 在线| 欧美色图久久| 亚洲pron| 亚洲一区二区av| 亚洲最黄网站| 国产精品毛片久久久久久久| 精品国产一二三| 国产精品高潮粉嫩av| 日本精品福利视频| 在线观看国产精品一区| 国产ts人妖调教重口男| 成人亚洲在线观看| 新版的欧美在线视频| 国产精品久久久久蜜臀| 99精品国产热久久91蜜凸| 欧美日韩高清不卡| 日韩免费在线视频| 日本精品久久久久久久久久| av电影网站在线观看| 国产视频手机在线| 日韩男人天堂| 国产精品视频一区视频二区| 日本色综合中文字幕| 精品福利樱桃av导航| 欧美成在线视频| 一区二区不卡视频| 美女爆乳18禁www久久久久久| 精品国产乱码久久久久久蜜臀网站| 成年人免费看的视频| 成人h在线观看| 天堂一区二区在线| 色综合中文综合网| 热久久免费国产视频| 欧美性大战久久久久xxx| 久久久综合久久久| 在线观看色视频| 国产自产自拍视频在线观看| 最新国产乱人伦偷精品免费网站| 亚洲精品乱码久久久久久| 久久黄色av网站| 中文字幕剧情在线观看一区| 亚洲天堂最新地址| 日韩欧美黄色片| av网站导航在线观看免费| 国产高清一区| 夜夜嗨av一区二区三区四季av| 久久在线精品视频| 99国产精品白浆在线观看免费| 少妇久久久久久被弄高潮| 国产激情自拍| 人成在线免费网站| 日韩1区2区3区| 99在线观看免费视频精品观看| 亚洲精品成人精品456| 欧美激情手机在线视频| 男女超爽视频免费播放| www毛片com| 特黄特色特刺激视频免费播放| 日本一区二区三区播放| 成人黄页毛片网站| 亚洲图片在区色| 中文字幕免费高| 久久精品99国产精| eeuss草民免费| 久久视频社区| 91在线国内视频| 日韩在线观看精品| 国产毛片视频网站| 在线免费观看中文字幕| 欧美zzoo| 国产专区一区| 欧美三级在线视频| 国产另类第一区| 公肉吊粗大爽色翁浪妇视频| 一级做a爰片性色毛片视频| 成人亚洲网站| 波多野洁衣一区| 日韩中文字幕免费| 免费看又黄又无码的网站| 亚洲图片中文字幕| 秋霞午夜在线观看| 久久国产精品久久w女人spa| 日韩一级完整毛片| 亚洲电影免费| 国产91国语对白在线| 亚洲成人av在线影院| 欧美精品一区二区三区久久久竹菊| 精品久久久国产| 91在线观看欧美日韩| 91久久免费视频| 暧暧视频免费| 亚洲综合小说图片| 性久久久久久久| 99在线视频播放| 99成人在线观看| 特级全黄一级毛片| 亚洲欧美综合| 精品国产一区a| 青青草国产精品视频| 国产黄色片网站| 欧美激情20| 91女人视频在线观看| 91av视频在线| 天天躁日日躁aaaa视频| www99xav| 亚洲国产精品日韩专区av有中文| 欧美在线你懂得| 日韩欧美一区二区三区四区| 久操视频在线免费观看| 久久精品视频免费看| 国产一级精品在线| 免费av一区二区| 最新国产精品自拍| 久草网视频在线观看| 国产性一级片| 亚洲国产一区二区精品专区| 日韩电影在线观看永久视频免费网站| 国产成人一区二区三区别| 亚洲午夜高清视频| 亚洲激情免费观看| 精品香蕉一区二区三区| 岛国大片在线播放| 少妇人妻一区二区| 久久亚洲国产精品尤物| 1000精品久久久久久久久| 91久久精品在线| 久久国产在线视频| 欧美激情黑人| 成人黄色777网| 欧美亚洲日本黄色| 亚洲午夜精品久久久久久高潮| 污污免费网站| 久久精品日韩欧美| www.欧美三级电影.com| 在线中文字日产幕| 成人片在线播放| 在线免费观看欧美| 在线观看欧美日韩国产| 亚洲18在线看污www麻豆| 天堂网在线.www天堂在线| 成人同人动漫免费观看| 精品国免费一区二区三区| 每日在线更新av| 国产精品乱码一区二区三区视频| 久久99国产精品视频| 日韩三级视频在线看| www日韩视频| 看成年女人免费午夜视频| 欧美 日韩 国产 一区| 亚洲欧美精品一区| 无码人妻一区二区三区免费n鬼沢| 7777在线| 视频一区免费在线观看| 欧美精品精品精品精品免费| 小嫩苞一区二区三区| 欧美极品视频| 中文字幕中文字幕在线一区 | 亚洲国产成人av好男人在线观看| 久久久久久欧美精品色一二三四| 国产成人久久精品77777综合 | 精品国产一区二区三区久久久樱花| 在线播放中文字幕一区| 国产精品欧美激情在线观看| 美女喷水白浆| 国产视频欧美| 91国内免费在线视频| 国产亚洲精久久久久久无码77777| 波多野结依一区| 亚洲一区二区美女| 日本久久久网站| 免费看片黄色| 每日更新成人在线视频| 91av在线免费观看| 国产剧情在线视频| 一区二区三区| 欧美一区二区三区影视| 日韩精品视频网址| 四虎影视精品成人| 久久久精品欧美丰满| 蜜桃狠狠色伊人亚洲综合网站| 少妇精品视频一区二区| 欧美亚洲激情| 日韩网站免费观看| 中文字幕av免费在线观看| 69av成人| 在线观看不卡视频| 国产传媒免费观看| 你懂的国产在线| 亚洲tv在线| 日韩一区二区三区电影在线观看| 国产伦精品一区二区三区妓女下载 | 三级全黄做爰视频| 在线观看爽视频| 欧美亚洲愉拍一区二区| 99国产精品久久久久久| 男同在线观看| 亚洲欧美一区二区三区孕妇| www插插插无码视频网站| 免费男女羞羞的视频网站中文版| 国产麻豆午夜三级精品| 国产一级精品aaaaa看| 原谅我中文字幕| 一本色道精品久久一区二区三区| 青草热久免费精品视频| 国产露脸国语对白在线| 第四色成人网| 992tv在线成人免费观看| 超碰在线97观看| 国产99久久久国产精品成人免费| 美女福利精品视频| 国产一级一级国产| 亚洲伊人春色| 欧美黄色片在线观看| 激情网站在线观看| 国产麻豆一区二区三区精品视频| 久久精品国产欧美激情| 中文字幕在线观看视频网站| 狠狠一区二区三区| 久久天天躁狠狠躁夜夜av| 亚洲另类在线观看| 美女毛片一区二区三区四区| 欧美精品在线观看| 一区两区小视频| 日韩欧美高清| 国产91色在线|免| 成人av手机在线| 亚洲视频一区| 亚洲精品免费网站| 九九久久精品这里久久网| 国内精品免费在线观看| 亚洲精品中文字幕乱码三区不卡| 日日干天天草| 国产精品美女久久久久久久久久久 | 国产又粗又黄又爽| 欧美在线亚洲| 成人免费观看a| 欧美黑人xxxx猛牲大交| 久久电影网电视剧免费观看| 热re99久久精品国99热蜜月| 天天草夜夜操| 中文字幕在线不卡一区二区三区| 青青青在线视频免费观看| 米奇777四色精品人人爽| 欧美乱妇23p| 人妻人人澡人人添人人爽| 欧美理伦片在线播放| 欧美一二三视频| 欲求不满中文字幕| 国产精品第一国产精品| 亚洲国产日韩欧美在线图片| 国产污视频在线看| 精品国产网站| 国产一区二区丝袜| 91av福利| 国产精品视频在线看| 青娱乐国产精品视频| 97成人资源| 亚洲性猛交xxxxwww| 国产精品久久久久久在线| 国产精品免费看| 亚洲v国产v| 日韩欧美电影在线观看| 在线看国产一区二区| 国产一区二区三区视频播放| 米奇精品关键词| 国产精品日韩欧美大师| 免费视频91| 久久精品亚洲麻豆av一区二区| 色婷婷综合网站| 擼擼色在线看观看免费| 中文字幕亚洲无线码a| 国产乱码久久久久| 日韩制服丝袜先锋影音| 8x8x华人在线| 超碰在线最新| 亚洲男人的天堂在线| 一区二区精品视频在线观看| 日韩在线一区二区三区| 亚洲爆乳无码精品aaa片蜜桃| 男人天堂久久久| 日韩精品免费电影| www.五月婷| 国产99久久久久久免费看农村| 日韩久久一级片| 电影在线观看一区| 久久久999精品免费| 中文字幕av高清片| 久久久五月婷婷| fc2成人免费视频| 2020最新国产精品| 91精品久久久久久久久久久| 午夜网站在线观看| 在线免费一区三区| 日本黄色片视频| 免费在线观看成人av| 男女激情免费视频| 国产在线88av| 91精品国产成人www| 日本色七七影院| 精品成人影院| 国产精品久久久久久久天堂第1集| 日本不卡1区2区3区| 欧美美女视频在线观看| 波多野结衣mp4| 久久99久国产精品黄毛片色诱| 男女av免费观看| 四虎国产精品永久在线国在线| 国产不卡av在线免费观看| 黄色成人免费观看| 欧美蜜桃一区二区三区| 中文字幕在线播放日韩| 激情小说亚洲一区| www.桃色.com| 欧美激情极品| 日本一区二区三区四区在线观看| 日本在线免费中文字幕| 久久精品国产成人精品| 私人玩物在线观看| 一本大道av伊人久久综合| 91视频久久久| 不卡视频免费播放| 魔女鞋交玉足榨精调教| 99久久综合| 17c丨国产丨精品视频| 成人软件在线观看| 国产噜噜噜噜噜久久久久久久久 | av男人的天堂网| 欧美放荡的少妇| 亚洲乱码在线观看| 中文字幕精品综合| 亚洲天堂黄色片| 视频在线观看91| 国产精品久久久久久久99| 亚洲精品合集| 中文字幕一区二区三区有限公司| 蜜桃麻豆av在线| 国产精品美女免费视频| 在线中文字幕观看| 伊人伊人伊人久久| 伊人影院在线观看| 777久久久精品| 午夜一区在线观看| 亚洲国产视频网站| 国产主播第一页| 久久日一线二线三线suv| 青花影视在线观看免费高清| 麻豆国产精品视频| 免费啪视频在线观看| 欧美日韩18| youjizzxxxx18| 欧美日韩亚洲在线观看| 99er在线视频| 久久香蕉精品香蕉| 特级黄色录像片| 激情视频亚洲| 日韩精品久久一区| 久久av日韩| 欧美一级爽aaaaa大片| 中文字幕一区久| 国产女主播一区二区| 大菠萝精品导航| 97人人澡人人爽| 伦理av在线| 成人字幕网zmw| a级网站在线播放| 国产一区红桃视频| a免费在线观看| 国产一区二区色| 电影k8一区二区三区久久 | 日韩女同一区二区三区| 日韩电影免费在线| 久久国产柳州莫菁门| 美女视频网站黄色亚洲| jizz中文字幕| 精品一区二区免费视频|