RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

了解一下函數(shù)指針的概念和使用方法

嵌入式情報(bào)局 ? 來(lái)源:嵌入式情報(bào)局 ? 2023-11-06 10:04 ? 次閱讀

一、函數(shù)指針

在講回調(diào)函數(shù)之前,我們需要了解函數(shù)指針。

我們都知道,C語(yǔ)言的靈魂是指針,我們經(jīng)常使用整型指針,字符串指針,結(jié)構(gòu)體指針等。

int*p1;
char*p2;
STRUCT*p3;// STRUCT為我們定義的結(jié)構(gòu)體

但是好像我們一般很少使用函數(shù)指針,我們一般使用函數(shù)都是直接使用函數(shù)調(diào)用。

下面我們來(lái)了解一下函數(shù)指針的概念和使用方法。

1. 概念

函數(shù)指針是指向函數(shù)的指針變量。

通常我們說(shuō)的指針變量是指向一個(gè)整型、字符型或數(shù)組等變量,而函數(shù)指針是指向函數(shù)。

函數(shù)指針可以像一般函數(shù)一樣,用于調(diào)用函數(shù)、傳遞參數(shù)。

函數(shù)指針的定義方式為:

函數(shù)返回值類型 (* 指針變量名) (函數(shù)參數(shù)列表);

“函數(shù)返回值類型”表示該指針變量可以指向具有什么返回值類型的函數(shù);“函數(shù)參數(shù)列表”表示該指針變量可以指向具有什么參數(shù)列表的函數(shù)。這個(gè)參數(shù)列表中只需要寫函數(shù)的參數(shù)類型即可。

我們看到,函數(shù)指針的定義就是將“函數(shù)聲明”中的“函數(shù)名”改成“(指針變量名)”。但是這里需要注意的是:“(指針變量名)”兩端的括號(hào)不能省略,括號(hào)改變了運(yùn)算符的優(yōu)先級(jí)。如果省略了括號(hào),就不是定義函數(shù)指針而是一個(gè)函數(shù)聲明了,即聲明了一個(gè)返回值類型為指針型的函數(shù)。

那么怎么判斷一個(gè)指針變量是指向變量的指針變量還是指向函數(shù)的指針變量呢?首先看變量名前面有沒(méi)有“”,如果有“”說(shuō)明是指針變量;其次看變量名的后面有沒(méi)有帶有形參類型的圓括號(hào),如果有就是指向函數(shù)的指針變量,即函數(shù)指針,如果沒(méi)有就是指向變量的指針變量。

最后需要注意的是,指向函數(shù)的指針變量沒(méi)有 ++ 和 – 運(yùn)算。

一般為了方便使用,我們會(huì)選擇:

typedef 函數(shù)返回值類型 (* 指針變量名) (函數(shù)參數(shù)列表);

比如:

typedefint(*Fun1)(int);//聲明也可寫成int (*Fun1)(int x),但習(xí)慣上一般不這樣。
typedefint(*Fun2)(int,int);//參數(shù)為兩個(gè)整型,返回值為整型
typedefvoid(*Fun3)(void);//無(wú)參數(shù)和返回值
typedefvoid*(*Fun4)(void*);//參數(shù)和返回值都為void*指針

2. 如何用函數(shù)指針調(diào)用函數(shù)

給大家舉一個(gè)例子:

intFunc(intx);/*聲明一個(gè)函數(shù)*/
int(*p)(intx);/*定義一個(gè)函數(shù)指針*/
p=Func;/*將Func函數(shù)的首地址賦給指針變量p*/
p=&Func;/*將Func函數(shù)的首地址賦給指針變量p*/

賦值時(shí)函數(shù) Func 不帶括號(hào),也不帶參數(shù)。由于函數(shù)名 Func 代表函數(shù)的首地址,因此經(jīng)過(guò)賦值以后,指針變量 p 就指向函數(shù) Func() 代碼的首地址了。

下面來(lái)寫一個(gè)程序,看了這個(gè)程序你們就明白函數(shù)指針怎么使用了:

#include
intMax(int,int);//函數(shù)聲明
intmain(void)
{
int(*p)(int,int);//定義一個(gè)函數(shù)指針
inta,b,c;
p=Max;//把函數(shù)Max賦給指針變量p,使p指向Max函數(shù)
printf("pleaseenteraandb:");
scanf("%d%d",&a,&b);
c=(*p)(a,b);//通過(guò)函數(shù)指針調(diào)用Max函數(shù)
printf("a=%d
b=%d
max=%d
",a,b,c);
return0;
}
intMax(intx,inty)//定義Max函數(shù)
{
intz;
if(x>y)
{
z=x;
}
else
{
z=y;
}
returnz;
}

特別注意的是,因?yàn)楹瘮?shù)名本身就可以表示該函數(shù)地址(指針),因此在獲取函數(shù)指針時(shí),可以直接用函數(shù)名,也可以取函數(shù)的地址。

p=Max可以改成p=&Max
c=(*p)(a,b)可以改成c=p(a,b)

3. 函數(shù)指針作為某個(gè)函數(shù)的參數(shù)

既然函數(shù)指針變量是一個(gè)變量,當(dāng)然也可以作為某個(gè)函數(shù)的參數(shù)來(lái)使用的。示例:

#include
#include

typedefvoid(*FunType)(int);
//前加一個(gè)typedef關(guān)鍵字,這樣就定義一個(gè)名為FunType函數(shù)指針類型,而不是一個(gè)FunType變量。
//形式同typedefint*PINT;
voidmyFun(intx);
voidhisFun(intx);
voidherFun(intx);
voidcallFun(FunTypefp,intx);
intmain()
{
callFun(myFun,100);//傳入函數(shù)指針常量,作為回調(diào)函數(shù)
callFun(hisFun,200);
callFun(herFun,300);

return0;
}

voidcallFun(FunTypefp,intx)
{
fp(x);//通過(guò)fp的指針執(zhí)行傳遞進(jìn)來(lái)的函數(shù),注意fp所指的函數(shù)有一個(gè)參數(shù)
}

voidmyFun(intx)
{
printf("myFun:%d
",x);
}
voidhisFun(intx)
{
printf("hisFun:%d
",x);
}
voidherFun(intx)
{
printf("herFun:%d
",x);
}

輸出:

9e43e9a6-7b0e-11ee-939d-92fbcf53809c.jpg

4. 函數(shù)指針作為函數(shù)返回類型

有了上面的基礎(chǔ),要寫出返回類型為函數(shù)指針的函數(shù)應(yīng)該不難了,下面這個(gè)例子就是返回類型為函數(shù)指針的函數(shù):

void(*func5(int,int,float))(int,int)
{
...
}

在這里,func5以(int, int, float)為參數(shù),其返回類型為void (*)(int, int)。在C語(yǔ)言中,變量或者函數(shù)的聲明也是一個(gè)大學(xué)問(wèn),想要了解更多關(guān)于聲明的話題,可以參考我之前的文章 - C專家編程》讀書筆記(1-3章)。這本書的第三章花了整整一章的內(nèi)容來(lái)講解如何讀懂C語(yǔ)言的聲明。

5. 函數(shù)指針數(shù)組

在開始講解回調(diào)函數(shù)前,最后介紹一下函數(shù)指針數(shù)組。既然函數(shù)指針也是指針,那我們就可以用數(shù)組來(lái)存放函數(shù)指針。下面我們看一個(gè)函數(shù)指針數(shù)組的例子:

/*方法1*/
void(*func_array_1[5])(int,int,float);

/*方法2*/
typedefvoid(*p_func_array)(int,int,float);
p_func_arrayfunc_array_2[5];

上面兩種方法都可以用來(lái)定義函數(shù)指針數(shù)組,它們定義了一個(gè)元素個(gè)數(shù)為5,類型是 *void (*)(int, int, float) *的函數(shù)指針數(shù)組。

6. 函數(shù)指針總結(jié)

函數(shù)指針常量 :Max;函數(shù)指針變量:p;

數(shù)名調(diào)用如果都得如(*myFun)(10)這樣,那書寫與讀起來(lái)都是不方便和不習(xí)慣的。所以C語(yǔ)言的設(shè)計(jì)者們才會(huì)設(shè)計(jì)成又可允許myFun(10)這種形式地調(diào)用(這樣方便多了,并與數(shù)學(xué)中的函數(shù)形式一樣)。

在函數(shù)指針變量也可以存入一個(gè)數(shù)組內(nèi)。數(shù)組的聲明方法:int (*fArray[10]) ( int );

二、回調(diào)函數(shù)

1. 什么是回調(diào)函數(shù)

我們先來(lái)看看百度百科是如何定義回調(diào)函數(shù)的:

回調(diào)函數(shù)就是一個(gè)通過(guò)函數(shù)指針調(diào)用的函數(shù)。如果你把函數(shù)的指針(地址)作為參數(shù)傳遞給另一個(gè)函數(shù),當(dāng)這個(gè)指針被用來(lái)調(diào)用其所指向的函數(shù)時(shí),我們就說(shuō)這是回調(diào)函數(shù)。回調(diào)函數(shù)不是由該函數(shù)的實(shí)現(xiàn)方直接調(diào)用,而是在特定的事件或條件發(fā)生時(shí)由另外的一方調(diào)用的,用于對(duì)該事件或條件進(jìn)行響應(yīng)。

這段話比較長(zhǎng),也比較繞口。下面我通過(guò)一幅圖來(lái)說(shuō)明什么是回調(diào):

9e564e70-7b0e-11ee-939d-92fbcf53809c.png

假設(shè)我們要使用一個(gè)排序函數(shù)來(lái)對(duì)數(shù)組進(jìn)行排序,那么在主程序(Main program)中,我們先通過(guò)庫(kù),選擇一個(gè)庫(kù)排序函數(shù)(Library function)。但排序算法有很多,有冒泡排序,選擇排序,快速排序,歸并排序。同時(shí),我們也可能需要對(duì)特殊的對(duì)象進(jìn)行排序,比如特定的結(jié)構(gòu)體等。庫(kù)函數(shù)會(huì)根據(jù)我們的需要選擇一種排序算法,然后調(diào)用實(shí)現(xiàn)該算法的函數(shù)來(lái)完成排序工作。這個(gè)被調(diào)用的排序函數(shù)就是回調(diào)函數(shù)(Callback function)。

結(jié)合這幅圖和上面對(duì)回調(diào)函數(shù)的解釋,我們可以發(fā)現(xiàn),要實(shí)現(xiàn)回調(diào)函數(shù),最關(guān)鍵的一點(diǎn)就是要將函數(shù)的指針傳遞給一個(gè)函數(shù)(上圖中是庫(kù)函數(shù)),然后這個(gè)函數(shù)就可以通過(guò)這個(gè)指針來(lái)調(diào)用回調(diào)函數(shù)了。注意,回調(diào)函數(shù)并不是C語(yǔ)言特有的,幾乎任何語(yǔ)言都有回調(diào)函數(shù)。在C語(yǔ)言中,我們通過(guò)使用函數(shù)指針來(lái)實(shí)現(xiàn)回調(diào)函數(shù)。

我的理解是:把一段可執(zhí)行的代碼像參數(shù)傳遞那樣傳給其他代碼,而這段代碼會(huì)在某個(gè)時(shí)刻被調(diào)用執(zhí)行,這就叫做回調(diào)。

如果代碼立即被執(zhí)行就稱為同步回調(diào),如果過(guò)后再執(zhí)行,則稱之為異步回調(diào)。

回調(diào)函數(shù)就是一個(gè)通過(guò)函數(shù)指針調(diào)用的函數(shù)。如果你把函數(shù)的指針(地址)作為參數(shù)傳遞給另一個(gè)函數(shù),當(dāng)這個(gè)指針被用來(lái)調(diào)用其所指向的函數(shù)時(shí),我們就說(shuō)這是回調(diào)函數(shù)。

回調(diào)函數(shù)不是由該函數(shù)的實(shí)現(xiàn)方直接調(diào)用,而是在特定的事件或條件發(fā)生時(shí)由另外的一方調(diào)用的,用于對(duì)該事件或條件進(jìn)行響應(yīng)。

2. 為什么要用回調(diào)函數(shù)?

因?yàn)榭梢园颜{(diào)用者與被調(diào)用者分開,所以調(diào)用者不關(guān)心誰(shuí)是被調(diào)用者。它只需知道存在一個(gè)具有特定原型和限制條件的被調(diào)用函數(shù)。

簡(jiǎn)而言之,回調(diào)函數(shù)就是允許用戶把需要調(diào)用的方法的指針作為參數(shù)傳遞給一個(gè)函數(shù),以便該函數(shù)在處理相似事件的時(shí)候可以靈活的使用不同的方法。

9e637a0a-7b0e-11ee-939d-92fbcf53809c.jpg

intCallback()// /

回調(diào)似乎只是函數(shù)間的調(diào)用,和普通函數(shù)調(diào)用沒(méi)啥區(qū)別。

但仔細(xì)看,可以發(fā)現(xiàn)兩者之間的一個(gè)關(guān)鍵的不同:在回調(diào)中,主程序把回調(diào)函數(shù)像參數(shù)一樣傳入庫(kù)函數(shù)。

這樣一來(lái),只要我們改變傳進(jìn)庫(kù)函數(shù)的參數(shù),就可以實(shí)現(xiàn)不同的功能,這樣有沒(méi)有覺(jué)得很靈活?并且當(dāng)庫(kù)函數(shù)很復(fù)雜或者不可見(jiàn)的時(shí)候利用回調(diào)函數(shù)就顯得十分優(yōu)秀。

3. 怎么使用回調(diào)函數(shù)?

intCallback_1(inta)// /

如上述代碼:可以看到,Handle()函數(shù)里面的參數(shù)是一個(gè)指針,在main()函數(shù)里調(diào)用Handle()函數(shù)的時(shí)候,給它傳入了函數(shù)Callback_1()/Callback_2()/Callback_3()的函數(shù)名,這時(shí)候的函數(shù)名就是對(duì)應(yīng)函數(shù)的指針,也就是說(shuō),回調(diào)函數(shù)其實(shí)就是函數(shù)指針的一種用法。

4. 下面是一個(gè)四則運(yùn)算的簡(jiǎn)單回調(diào)函數(shù)例子:

#include
#include

/****************************************
*函數(shù)指針結(jié)構(gòu)體
***************************************/
typedefstruct_OP{
float(*p_add)(float,float);
float(*p_sub)(float,float);
float(*p_mul)(float,float);
float(*p_div)(float,float);
}OP;

/****************************************
*加減乘除函數(shù)
***************************************/
floatADD(floata,floatb)
{
returna+b;
}

floatSUB(floata,floatb)
{
returna-b;
}

floatMUL(floata,floatb)
{
returna*b;
}

floatDIV(floata,floatb)
{
returna/b;
}

/****************************************
*初始化函數(shù)指針
***************************************/
voidinit_op(OP*op)
{
op->p_add=ADD;
op->p_sub=SUB;
op->p_mul=&MUL;
op->p_div=÷
}

/****************************************
*庫(kù)函數(shù)
***************************************/
floatadd_sub_mul_div(floata,floatb,float(*op_func)(float,float))
{
return(*op_func)(a,b);
}

intmain(intargc,char*argv[])
{
OP*op=(OP*)malloc(sizeof(OP));
init_op(op);

/*直接使用函數(shù)指針調(diào)用函數(shù)*/
printf("ADD=%f,SUB=%f,MUL=%f,DIV=%f
",(op->p_add)(1.3,2.2),(*op->p_sub)(1.3,2.2),
(op->p_mul)(1.3,2.2),(*op->p_div)(1.3,2.2));

/*調(diào)用回調(diào)函數(shù)*/
printf("ADD=%f,SUB=%f,MUL=%f,DIV=%f
",
add_sub_mul_div(1.3,2.2,ADD),
add_sub_mul_div(1.3,2.2,SUB),
add_sub_mul_div(1.3,2.2,MUL),
add_sub_mul_div(1.3,2.2,DIV));

return0;
}

5. 回調(diào)函數(shù)實(shí)例(很有用)

一個(gè)GPRS模塊聯(lián)網(wǎng)的小項(xiàng)目,使用過(guò)的同學(xué)大概知道2G、4G、NB等模塊要想實(shí)現(xiàn)無(wú)線聯(lián)網(wǎng)功能都需要經(jīng)歷模塊上電初始化、注冊(cè)網(wǎng)絡(luò)、查詢網(wǎng)絡(luò)信息質(zhì)量、連接服務(wù)器等步驟,這里的的例子就是,利用一個(gè)狀態(tài)機(jī)函數(shù)(根據(jù)不同狀態(tài)依次調(diào)用不同實(shí)現(xiàn)方法的函數(shù)),通過(guò)回調(diào)函數(shù)的方式依次調(diào)用不同的函數(shù),實(shí)現(xiàn)模塊聯(lián)網(wǎng)功能,如下:

/*********工作狀態(tài)處理*********/
typedefstruct
{
uint8_tmStatus;
uint8_t(*Funtion)(void);//函數(shù)指針的形式
}M26_WorkStatus_TypeDef;//M26的工作狀態(tài)集合調(diào)用函數(shù)


/**********************************************
**>M26工作狀態(tài)集合函數(shù)
***********************************************/
M26_WorkStatus_TypeDefM26_WorkStatus_Tab[]=
{
{GPRS_NETWORK_CLOSE,M26_PWRKEY_Off},//模塊關(guān)機(jī)
{GPRS_NETWORK_OPEN,M26_PWRKEY_On},//模塊開機(jī)
{GPRS_NETWORK_Start,M26_Work_Init},//管腳初始化
{GPRS_NETWORK_CONF,M26_NET_Config},//AT指令配置
{GPRS_NETWORK_LINK_CTC,M26_LINK_CTC},//連接調(diào)度中心
{GPRS_NETWORK_WAIT_CTC,M26_WAIT_CTC},//等待調(diào)度中心回復(fù)
{GPRS_NETWORK_LINK_FEM,M26_LINK_FEM},//連接前置機(jī)
{GPRS_NETWORK_WAIT_FEM,M26_WAIT_FEM},//等待前置機(jī)回復(fù)
{GPRS_NETWORK_COMM,M26_COMM},//正常工作
{GPRS_NETWORK_WAIT_Sig,M26_WAIT_Sig},//等待信號(hào)回復(fù)
{GPRS_NETWORK_GetSignal,M26_GetSignal},//獲取信號(hào)值
{GPRS_NETWORK_RESTART,M26_RESET},//模塊重啟
}
/**********************************************
**>M26模塊工作狀態(tài)機(jī),依次調(diào)用里面的12個(gè)函數(shù)
***********************************************/
uint8_tM26_WorkStatus_Call(uint8_tStart)
{
uint8_ti=0;
for(i=0;i

所以,如果有人想做個(gè)NB模塊聯(lián)網(wǎng)項(xiàng)目,可以copy上面的框架,只需要修改回調(diào)函數(shù)內(nèi)部的具體實(shí)現(xiàn),或者增加、減少回調(diào)函數(shù),就可以很簡(jiǎn)潔快速的實(shí)現(xiàn)模塊聯(lián)網(wǎng)。







審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 嵌入式
    +關(guān)注

    關(guān)注

    5082

    文章

    19104

    瀏覽量

    304796
  • GPRS
    +關(guān)注

    關(guān)注

    21

    文章

    984

    瀏覽量

    129423
  • C語(yǔ)言
    +關(guān)注

    關(guān)注

    180

    文章

    7604

    瀏覽量

    136683
  • 狀態(tài)機(jī)
    +關(guān)注

    關(guān)注

    2

    文章

    492

    瀏覽量

    27528
  • 回調(diào)函數(shù)
    +關(guān)注

    關(guān)注

    0

    文章

    87

    瀏覽量

    11554

原文標(biāo)題:嵌入式編程先搞定回調(diào)函數(shù)

文章出處:【微信號(hào):嵌入式情報(bào)局,微信公眾號(hào):嵌入式情報(bào)局】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    淺析函數(shù)指針指針函數(shù)及其應(yīng)用

    什么是指針?相信大家對(duì)這個(gè)問(wèn)題其實(shí)并不陌生,對(duì)指針概念也不會(huì)很模糊,在這里我也大概介紹一下。
    發(fā)表于 03-08 13:17 ?262次閱讀

    函數(shù)指針指針函數(shù)概念

    不少朋友會(huì)混淆“函數(shù)指針”和“指針函數(shù)”這兩個(gè)概念,本文詳細(xì)介紹一下
    發(fā)表于 03-09 10:49 ?1192次閱讀

    linux系統(tǒng)中常見(jiàn)注冊(cè)函數(shù)使用方法

    大家好,今天給大家分享一下,linux系統(tǒng)中常見(jiàn)的注冊(cè)函數(shù)register_chrdev_region()、register_chrdev()、 alloc_chrdev_region()的使用方法。
    發(fā)表于 10-19 09:28 ?601次閱讀
    linux系統(tǒng)中常見(jiàn)注冊(cè)<b class='flag-5'>函數(shù)</b>的<b class='flag-5'>使用方法</b>

    C51語(yǔ)言的指針、結(jié)構(gòu)、聯(lián)合和枚舉

     指針是C51語(yǔ)言的精華也是難點(diǎn)。本章主要介紹指針概念、定義指針方法,介紹指向
    發(fā)表于 06-12 23:47 ?112次下載

    函數(shù)指針指針函數(shù)定義

    函數(shù)指針指針函數(shù),C語(yǔ)言學(xué)習(xí)中最容易混淆的概念,好好學(xué)習(xí)吧
    發(fā)表于 01-11 16:44 ?0次下載

    c語(yǔ)言函數(shù)指針定義,指針函數(shù)函數(shù)指針的區(qū)別

     往往,我們提到指針函數(shù)函數(shù)指針的時(shí)候,就有很多人弄不懂。下面就由小編詳細(xì)為大家介紹C語(yǔ)言中函數(shù)
    發(fā)表于 11-16 15:18 ?3624次閱讀

    vlookup函數(shù)使用方法及實(shí)例

    VLOOKUP函數(shù)是EXCEL最常用的查找函數(shù),VLOOKUP函數(shù)欄目有很多該函數(shù)的各種使用方法的教程,但還是有很多同學(xué)提問(wèn)與該
    發(fā)表于 12-01 16:27 ?6.6w次閱讀
    vlookup<b class='flag-5'>函數(shù)</b><b class='flag-5'>使用方法</b>及實(shí)例

    簡(jiǎn)要介紹一下Python-UNO的使用方法

    OpenOffice是個(gè)免費(fèi)的、開源的辦公套裝,集成了允許開發(fā)者用不同語(yǔ)言進(jìn)行開發(fā)的API。Python-UNO讓你可以在Python環(huán)境使用OpenOffice。本文簡(jiǎn)要介紹了一下Python-UNO的
    的頭像 發(fā)表于 01-04 14:54 ?8579次閱讀
    簡(jiǎn)要介紹<b class='flag-5'>一下</b>Python-UNO的<b class='flag-5'>使用方法</b>

    理解函數(shù)指針、函數(shù)指針數(shù)組、函數(shù)指針數(shù)組的指針

    理解函數(shù)指針函數(shù)指針數(shù)組、函數(shù)指針數(shù)組的指針
    的頭像 發(fā)表于 06-29 15:38 ?1.5w次閱讀
    理解<b class='flag-5'>函數(shù)</b><b class='flag-5'>指針</b>、<b class='flag-5'>函數(shù)</b><b class='flag-5'>指針</b>數(shù)組、<b class='flag-5'>函數(shù)</b><b class='flag-5'>指針</b>數(shù)組的<b class='flag-5'>指針</b>

    函數(shù)指針和回調(diào)函數(shù)使用方法

    了解開發(fā)語(yǔ)言的朋友應(yīng)該都會(huì)對(duì)回調(diào)函數(shù)有所了解,在很多的程序開發(fā)語(yǔ)言中都能看到回調(diào)的身影。很多場(chǎng)景,當(dāng)某個(gè)條件成立以后我們希望代碼執(zhí)行某些指定的部分,這個(gè)時(shí)候可以考慮使用回調(diào)
    的頭像 發(fā)表于 04-10 15:08 ?1094次閱讀

    C語(yǔ)言進(jìn)階:函數(shù)指針概念使用方法

    函數(shù)指針是指向函數(shù)指針變量。 通常我們說(shuō)的指針變量是指向個(gè)整型、字符型或數(shù)組等變量,而
    發(fā)表于 05-02 06:17 ?5878次閱讀

    分享一下STM32基于CubeMX獨(dú)立看門狗的使用方法

    項(xiàng)目里面需要加個(gè)獨(dú)立看門狗,就上網(wǎng)了解一下,具體原理后期有時(shí)間再分享,今天先簡(jiǎn)單分享一下使用方法
    的頭像 發(fā)表于 10-26 14:38 ?3318次閱讀
    分享<b class='flag-5'>一下</b>STM32基于CubeMX獨(dú)立看門狗的<b class='flag-5'>使用方法</b>

    函數(shù)指針的基本概念和語(yǔ)法

    函數(shù)指針種非常強(qiáng)大的編程工具,它可以讓我們以更加靈活的方式編寫程序。在本文中,我們將介紹 8 個(gè)函數(shù)指針的高級(jí)應(yīng)用場(chǎng)景,并貼出相應(yīng)的代碼
    的頭像 發(fā)表于 12-12 09:33 ?452次閱讀

    函數(shù)指針指針函數(shù)是不是個(gè)東西?

    函數(shù)指針的本質(zhì)是指針,就跟整型指針、字符指針樣,函數(shù)
    的頭像 發(fā)表于 01-03 16:35 ?525次閱讀
    <b class='flag-5'>函數(shù)</b><b class='flag-5'>指針</b>和<b class='flag-5'>指針</b><b class='flag-5'>函數(shù)</b>是不是<b class='flag-5'>一</b>個(gè)東西?

    面試???1:函數(shù)指針指針函數(shù)、數(shù)組指針指針數(shù)組

    在嵌入式開發(fā)領(lǐng)域,函數(shù)指針、指針函數(shù)、數(shù)組指針指針數(shù)組是
    的頭像 發(fā)表于 08-10 08:11 ?825次閱讀
    面試常考+1:<b class='flag-5'>函數(shù)</b><b class='flag-5'>指針</b>與<b class='flag-5'>指針</b><b class='flag-5'>函數(shù)</b>、數(shù)組<b class='flag-5'>指針</b>與<b class='flag-5'>指針</b>數(shù)組
    RM新时代网站-首页