欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C語言回調(diào)函數(shù)的簡單運用

 更新時間:2021年09月21日 15:04:24   作者:小黑!  
回調(diào)函數(shù)就是函數(shù)指針變量作為另外一個函數(shù)的參數(shù)而使用的一種應(yīng)用情形。本文就詳細(xì)的介紹一下C語言回調(diào)函數(shù)的簡單運用,具有一定的參考價值,感興趣的小伙伴們可以參考一下

一、什么是回調(diào)函數(shù)

因為在程序中,我們有很多的庫函數(shù),我們也有很多的上層函數(shù),為了增加程序的靈活性,我們就將一些函數(shù)指針作為參數(shù)傳遞到函數(shù)里面去。
說的粗糙一點,就是將一個函數(shù)作為另一個函數(shù)的函數(shù)參數(shù)。
調(diào)用回調(diào)函數(shù)我們需要一個中間函數(shù)進(jìn)行過渡。
這個中間函數(shù)的參數(shù)是一個函數(shù)指針。

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

我們來寫一個簡單的例子,幫助我們理解:

#include <stdio.h>

/*回調(diào)函數(shù)1*/
void callBack1(void)
{
	printf("this is callback1\n");
}
/*回調(diào)函數(shù)2*/
void callBack2(void)
{
	printf("this is callback2\n");
}
/*中間函數(shù)*/
/*參數(shù)是一個函數(shù)指針*/
void calc(void (*func)())
{
	func();
}

int main()
{
	calc(callBack1);
	printf("************\n");
	calc(callBack2);
	
	return 0;
}

在這里插入圖片描述

分析一下這個簡單的回調(diào)函數(shù)的運用。
函數(shù)從main函數(shù)開始運行,我們將回調(diào)函數(shù)(callBack)作為一個參數(shù)傳遞到中間函數(shù)(calc)里面,中間函數(shù)通過函數(shù)指針的方式來接受,通過傳入不同的回調(diào)函數(shù)((callBack1)、(callBack2))來執(zhí)行不同的結(jié)果。

三、帶參數(shù)的回調(diào)函數(shù)

上面的程序簡單的說明了不帶參數(shù)的回調(diào)函數(shù),那么帶參數(shù)的回調(diào)函數(shù)我們也可以依葫蘆畫瓢。

#include <stdio.h>

/*回調(diào)函數(shù)1*/
int  callBack1(int a,int b)
{
	printf("this multiplication:\n");
	return a * b;
}
/*回調(diào)函數(shù)2*/
int  callBack2(int a, int b)
{
	printf("this addition:\n");
	return a + b;
}
/*中間函數(shù)*/
/*參數(shù)是一個函數(shù)指針*/
int  calc(int a,int b,int (*func)())
{
	func();
}

int main()
{
	int p;
	int q;
	p = calc(20,20, callBack1);
	printf("%d\n",p);
	printf("*********\n");
	q = calc(20, 20, callBack2);
	printf("%d\n", q);
	
	return 0;
}

在這里插入圖片描述

在工作中我們的回調(diào)函數(shù)肯定不會這么簡單,但是回調(diào)函數(shù)的作用是不去改變底層的程序,通過獲得底層的數(shù)據(jù)來得到不同的數(shù)據(jù)。這樣我們的上層會有很多變化,但是我們的底層程序不會動。

到此這篇關(guān)于C語言回調(diào)函數(shù)的簡單運用的文章就介紹到這了,更多相關(guān)C語言回調(diào)函數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++實現(xiàn)貪心算法的示例詳解

    C++實現(xiàn)貪心算法的示例詳解

    這篇文章主要通過幾個試題為大家詳細(xì)介紹了C++中貪心算法的實現(xiàn),文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)貪心算法有一定的幫助,需要的可以參考一下
    2022-07-07
  • C++17之std::any的具體使用

    C++17之std::any的具體使用

    本文主要介紹了C++17之std::any的具體使用,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • 詳解VS2010實現(xiàn)創(chuàng)建并生成動態(tài)鏈接庫dll的方法

    詳解VS2010實現(xiàn)創(chuàng)建并生成動態(tài)鏈接庫dll的方法

    在某些應(yīng)用程序場景下,需要將一些類或者方法編譯成動態(tài)鏈接庫dll,以便別的.exe或者.dll文件可以通過第三方庫的方式進(jìn)行調(diào)用,下面就簡單介紹一下如何通過VS2010來創(chuàng)建動態(tài)鏈接庫
    2022-12-12
  • 關(guān)于c++ 智能指針及 循環(huán)引用的問題

    關(guān)于c++ 智能指針及 循環(huán)引用的問題

    下面小編就為大家?guī)硪黄P(guān)于c++ 智能指針及 循環(huán)引用的問題。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-01-01
  • 解析C++類內(nèi)存分布

    解析C++類內(nèi)存分布

    本篇文章介紹了C++類內(nèi)存分布結(jié)構(gòu),我們來看看編譯器是怎么處理類成員內(nèi)存分布的,特別是在繼承、虛函數(shù)存在的情況下
    2021-06-06
  • VS2019開發(fā)簡單的C/C++動態(tài)鏈接庫并進(jìn)行調(diào)用的實現(xiàn)

    VS2019開發(fā)簡單的C/C++動態(tài)鏈接庫并進(jìn)行調(diào)用的實現(xiàn)

    這篇文章主要介紹了VS2019開發(fā)簡單的C/C++動態(tài)鏈接庫并進(jìn)行調(diào)用的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • OpenCV4 實現(xiàn)背景分離的詳細(xì)步驟(背景減法模型)

    OpenCV4 實現(xiàn)背景分離的詳細(xì)步驟(背景減法模型)

    背景分離(BS)是一種通過使用靜態(tài)相機(jī)來生成前景掩碼(即包含屬于場景中的移動對象像素的二進(jìn)制圖像)的常用技術(shù),本文給大家介紹OpenCV4 實現(xiàn)背景分離的詳細(xì)步驟,需要的朋友可以參考下
    2021-09-09
  • QT編寫簡單登錄界面的實現(xiàn)示例

    QT編寫簡單登錄界面的實現(xiàn)示例

    登陸界面是網(wǎng)頁中常見的界面,本文主要介紹了QT編寫簡單登錄界面的實現(xiàn)示例,具有一定的參考價值,感興趣的可以了解一下
    2024-02-02
  • IOS開發(fā)之UIScrollView實現(xiàn)圖片輪播器的無限滾動

    IOS開發(fā)之UIScrollView實現(xiàn)圖片輪播器的無限滾動

    這篇文章主要介紹了IOS開發(fā)之UIScrollView實現(xiàn)圖片輪播器的無限滾動的相關(guān)資料,需要的朋友可以參考下
    2017-07-07
  • Qt實現(xiàn)電子時鐘的示例代碼

    Qt實現(xiàn)電子時鐘的示例代碼

    這篇文章主要為大家詳細(xì)介紹了如何利用Qt實現(xiàn)顯示與桌面上并可以隨意拖拽至桌面任意位置的電子時鐘案例,感興趣的小伙伴可以嘗試一下
    2022-06-06

最新評論