C++函數(shù)指針以及對(duì)void*(*func)(void*)的解讀-創(chuàng)新互聯(lián)

1.函數(shù)指針

我們知道調(diào)用一個(gè)函數(shù)的時(shí)候可以給其傳遞參數(shù),這個(gè)參數(shù)可以是變量,也可以是變量的引用或者指針。那如果想傳遞另一個(gè)函數(shù)可以做到嗎?C提供了函數(shù)指針這一用法來完成這個(gè)需求。

成都創(chuàng)新互聯(lián)公司專注骨干網(wǎng)絡(luò)服務(wù)器租用10多年,服務(wù)更有保障!服務(wù)器租用,服務(wù)器托管德陽(yáng) 成都服務(wù)器租用,成都服務(wù)器托管,骨干網(wǎng)絡(luò)帶寬,享受低延遲,高速訪問。靈活、實(shí)現(xiàn)低成本的共享或公網(wǎng)數(shù)據(jù)中心高速帶寬的專屬高性能服務(wù)器。

函數(shù)在內(nèi)存中是占據(jù)一片空間的,有空間自然有地址,而程序中調(diào)用函數(shù)就是通過函數(shù)名找到內(nèi)存中該函數(shù)的首地址從而調(diào)用。那么這個(gè)首地址就可以被存放在一個(gè)指針中,以后程序除了直接通過函數(shù)名找到該函數(shù)外,也可以通過這個(gè)指針來找到目標(biāo)函數(shù)。這樣的指針就叫做函數(shù)指針。

函數(shù)指針的形式:returnType (*func)(param list)

returnType是函數(shù)的返回類型,func是指向目標(biāo)函數(shù)的函數(shù)指針,param list是函數(shù)的參數(shù)列表。

看一個(gè)例子:

#include//返回兩個(gè)數(shù)中較大的一個(gè)
int max(int a, int b){
    return a>b ? a : b;
}

int main(){
    int x, y, maxval;
    //定義函數(shù)指針
    int (*pmax)(int, int) = max;  //也可以寫作int (*pmax)(int a, int b)
    printf("Input two numbers:");
    scanf("%d %d", &x, &y);
    maxval = (*pmax)(x, y);
    printf("Max value: %d\n", maxval);

    return 0;
}

由此可以看出來,函數(shù)指針的形式其實(shí)和函數(shù)的聲明式非常像,其參數(shù)列表既可以是參數(shù)類型和參數(shù)名的組合,也可以只保留參數(shù)類型。

2.void*(* func)(void *)

有了上面的知識(shí)基礎(chǔ),來解讀void*(* func)(void *)就比較好理解了。該問題來自于線程創(chuàng)建函數(shù)pthread_create。

線程操作API之線程創(chuàng)建函數(shù)原型:int pthread_create(pthread_t *thread,const pthread_attr_t *attr,void *(* func)(void *),void *arg)

該參數(shù)的意思為func是該線程要執(zhí)行的目標(biāo)函數(shù)的函數(shù)指針,返回值是一個(gè)void類型指針,arg指向一個(gè)結(jié)構(gòu)體,該結(jié)構(gòu)體保存著目標(biāo)函數(shù)的參數(shù)。

參考:C語言函數(shù)指針(指向函數(shù)的指針)詳解

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧

分享文章:C++函數(shù)指針以及對(duì)void*(*func)(void*)的解讀-創(chuàng)新互聯(lián)
新聞來源:http://bm7419.com/article34/gehpe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供服務(wù)器托管微信公眾號(hào)、云服務(wù)器App設(shè)計(jì)、網(wǎng)站設(shè)計(jì)公司、品牌網(wǎng)站設(shè)計(jì)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

手機(jī)網(wǎng)站建設(shè)