曰本美女∴一区二区特级A级黄色大片, 国产亚洲精品美女久久久久久2025, 页岩实心砖-高密市宏伟建材有限公司, 午夜小视频在线观看欧美日韩手机在线,国产人妻奶水一区二区,国产玉足,妺妺窝人体色WWW网站孕妇,色综合天天综合网中文伊,成人在线麻豆网观看

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

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

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

為什么不需要給回調(diào)函數(shù)傳遞參數(shù)

學(xué)益得智能硬件 ? 來源:學(xué)益得智能硬件 ? 2025-04-15 10:11 ? 次閱讀

回調(diào)函數(shù)是C語言里面一個(gè)重要機(jī)制。

關(guān)于回調(diào)函數(shù),好多同學(xué)存在一個(gè)問題,使用回調(diào)函數(shù)的時(shí)候,為什么不需要給函數(shù)傳遞參數(shù)?

比如這樣一個(gè)代碼:

#include


voidsort(inta[],intsize,int(*p)(int,int))
{
 inti, j;
 for(i =0; i < size -?1; i++)
? ? {
? ? ? ??for?(j =?0; j < size -?1?- i; j++)
? ? ? ? {
? ? ? ? ? ??if?(p(a[j], a[j +?1])) ?
? ? ? ? ? ? {
? ? ? ? ? ? ? ??int?t = a[j];
? ? ? ? ? ? ? ? a[j] = a[j +?1];
? ? ? ? ? ? ? ? a[j +?1] = t;
? ? ? ? ? ? }
? ? ? ? }
? ? }
}


int?less(int?x,?int?y)
{
? ??return?(x > y) ?1:0;
}


intgreater(intx,inty)
{
 return(x < y) ??1?:?0;
}


int?main()
{
? ??int?a[10] = {1,?0,?4,?7,?2,?9,?5,?3,?8,?6};


? ??sort(a,?10, greater);


? ??for?(int?i =?0; i 

我們模仿C語言的 qsort 函數(shù),實(shí)現(xiàn)了一個(gè)冒泡排序算法,它既能從小到大排序,也能從大到小排序,取決與最后一個(gè)參數(shù)。

sort(a,10, greater);

這個(gè)參數(shù)既可以是 greater,也可以是 less,很顯然,greater 或者 less 都是一個(gè)函數(shù)。

那么問題來了,這個(gè)地方使用 greater,為什么不需要給 greater 傳遞兩個(gè)參數(shù),寫成這樣:

sort(a,10, greater(1,2));

如果寫成這樣,那就大錯(cuò)特錯(cuò)。這個(gè)意思是,先調(diào)用 greater,把函數(shù)的返回值作為 sort 的第三個(gè)參數(shù),要么是 0 要么 1。

很顯然,這邊要求第三個(gè)參數(shù)是指針,傳 0 或者 1 肯定不行。

那使用 greater 函數(shù)的時(shí)候,兩個(gè)參數(shù)是如何傳過去的?

其實(shí)這個(gè)地方只需要提供一個(gè)地址,就是接下來要調(diào)用的函數(shù)在哪?而函數(shù)名剛好就是函數(shù)的入口地址。

在 sort 函數(shù)內(nèi)部,會通過這個(gè)地址來調(diào)用函數(shù),就是這行代碼,不是直接調(diào)用 greater,而是通過函數(shù)指針來調(diào)用,同時(shí)給他傳遞了兩個(gè)參數(shù)。

如果調(diào)用 sort 的時(shí)候,傳遞的是 less,那函數(shù)指針 p 就指向了函數(shù) less,這里就相當(dāng)于間接調(diào)用了 less 函數(shù)。

所以回調(diào)函數(shù)在使用的時(shí)候,千萬不能傳參,加上括號,意思就變了。

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

    關(guān)注

    180

    文章

    7628

    瀏覽量

    139945
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4882

    瀏覽量

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

    關(guān)注

    0

    文章

    88

    瀏覽量

    11800

原文標(biāo)題:使用回調(diào)函數(shù),為什么不用傳參數(shù)

文章出處:【微信號:學(xué)益得智能硬件,微信公眾號:學(xué)益得智能硬件】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    一文詳解C語言函數(shù)指針與調(diào)函數(shù)

    在講調(diào)函數(shù)之前,我們需要了解函數(shù)指針。
    發(fā)表于 10-19 09:34 ?920次閱讀

    C語言里面的函數(shù)指針和調(diào)函數(shù)

    在講調(diào)函數(shù)之前,我們需要了解函數(shù)指針。
    發(fā)表于 12-13 10:28 ?766次閱讀

    調(diào)函數(shù)小結(jié)

    調(diào)用對應(yīng)的函數(shù))的這個(gè)過程就是函數(shù)回調(diào)過程,被調(diào)函數(shù)稱為
    發(fā)表于 07-05 01:51

    請問LWIP中的調(diào)函數(shù)如何傳遞參數(shù)

    :arg這個(gè)參數(shù)是哪里傳來的呢?在網(wǎng)上搜索回調(diào)函數(shù)的資料,似乎都沒有明確講解過調(diào)函數(shù)
    發(fā)表于 03-27 04:35

    C 語言調(diào)函數(shù)詳解

    有沒有覺得很靈活?并且絲毫不需要修改庫函數(shù)的實(shí)現(xiàn),這就是解耦。再仔細(xì)看看,主函數(shù)調(diào)函數(shù)是在同
    發(fā)表于 04-08 10:36

    ajax調(diào)方法名使用什么事件,ajax的調(diào)函數(shù)和匿名函數(shù) 精選資料分享

    1.什么是js調(diào)函數(shù)一. 調(diào)函數(shù)的作用js代碼會至上而下一條線執(zhí)行下去,但是有時(shí)候我們
    發(fā)表于 09-01 07:15

    如何將對象傳遞給BLE調(diào)函數(shù)?

    調(diào)中訪問該類的成員對象。我希望將 this 指針作為參數(shù)傳遞,但寄存器函數(shù)需要特定的結(jié)構(gòu)。有什么方法可以將會員數(shù)據(jù)放入
    發(fā)表于 04-13 06:12

    LabWindows/CVI 程序 調(diào)函數(shù)設(shè)計(jì)

    調(diào)函數(shù)是系統(tǒng)框架設(shè)計(jì)中非常重要的一種手段,所謂調(diào)函數(shù)(callback )是指一個(gè)通過
    發(fā)表于 05-03 16:54 ?1.1w次閱讀
    LabWindows/CVI 程序 <b class='flag-5'>回</b><b class='flag-5'>調(diào)</b><b class='flag-5'>函數(shù)</b>設(shè)計(jì)

    調(diào)函數(shù)的詳細(xì)資料說明

    異步事件的處理,首先將異步事件發(fā)生時(shí)需要執(zhí)行的代碼編寫成一個(gè)函數(shù),并將該函數(shù)注冊成為調(diào)函數(shù),這
    發(fā)表于 02-28 08:00 ?6次下載
    <b class='flag-5'>回</b><b class='flag-5'>調(diào)</b><b class='flag-5'>函數(shù)</b>的詳細(xì)資料說明

    C語言函數(shù)調(diào)函數(shù)

    來源:嵌入式客棧 1 什么是調(diào)函數(shù)?首先什么是調(diào)呢? 我的理解是:把一段可執(zhí)行的代碼像參數(shù)
    的頭像 發(fā)表于 09-11 09:57 ?4318次閱讀

    詳解調(diào)函數(shù)的概念及使用步驟

    調(diào)函數(shù)就是一個(gè)被作為參數(shù)傳遞函數(shù)。在C語言中,
    的頭像 發(fā)表于 05-26 15:20 ?4295次閱讀

    一文詳解C/C++調(diào)函數(shù)

    首先看一下調(diào)函數(shù)的官方解釋:調(diào)函數(shù)就是一個(gè)通過函數(shù)
    的頭像 發(fā)表于 02-12 09:20 ?1837次閱讀

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

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

    C語言技巧之調(diào)函數(shù)

    在講調(diào)函數(shù)之前,我們需要了解函數(shù)指針。
    的頭像 發(fā)表于 04-18 11:50 ?978次閱讀

    調(diào)函數(shù)(callback)是什么?調(diào)函數(shù)的實(shí)現(xiàn)方法

    調(diào)函數(shù)是一種特殊的函數(shù),它作為參數(shù)傳遞給另一個(gè)函數(shù)
    發(fā)表于 03-12 11:46 ?3651次閱讀