女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

為什么不需要給回調函數傳遞參數

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

回調函數是C語言里面一個重要機制。

關于回調函數,好多同學存在一個問題,使用回調函數的時候,為什么不需要給函數傳遞參數?

比如這樣一個代碼:

#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 函數,實現了一個冒泡排序算法,它既能從小到大排序,也能從大到小排序,取決與最后一個參數。

sort(a,10, greater);

這個參數既可以是 greater,也可以是 less,很顯然,greater 或者 less 都是一個函數。

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

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

如果寫成這樣,那就大錯特錯。這個意思是,先調用 greater,把函數的返回值作為 sort 的第三個參數,要么是 0 要么 1。

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

那使用 greater 函數的時候,兩個參數是如何傳過去的?

其實這個地方只需要提供一個地址,就是接下來要調用的函數在哪?而函數名剛好就是函數的入口地址。

在 sort 函數內部,會通過這個地址來調用函數,就是這行代碼,不是直接調用 greater,而是通過函數指針來調用,同時給他傳遞了兩個參數。

如果調用 sort 的時候,傳遞的是 less,那函數指針 p 就指向了函數 less,這里就相當于間接調用了 less 函數。

所以回調函數在使用的時候,千萬不能傳參,加上括號,意思就變了。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • C語言
    +關注

    關注

    180

    文章

    7630

    瀏覽量

    140322
  • 代碼
    +關注

    關注

    30

    文章

    4886

    瀏覽量

    70253
  • 回調函數
    +關注

    關注

    0

    文章

    88

    瀏覽量

    11825

原文標題:使用回調函數,為什么不用傳參數

文章出處:【微信號:學益得智能硬件,微信公眾號:學益得智能硬件】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    一文詳解C語言函數指針與調函數

    在講調函數之前,我們需要了解函數指針。
    發表于 10-19 09:34 ?943次閱讀

    C語言里面的函數指針和調函數

    在講調函數之前,我們需要了解函數指針。
    發表于 12-13 10:28 ?784次閱讀

    調函數小結

    調用對應的函數)的這個過程就是函數回調過程,被調函數稱為
    發表于 07-05 01:51

    請問LWIP中的調函數如何傳遞參數

    :arg這個參數是哪里傳來的呢?在網上搜索回調函數的資料,似乎都沒有明確講解過調函數
    發表于 03-27 04:35

    C 語言調函數詳解

    有沒有覺得很靈活?并且絲毫不需要修改庫函數的實現,這就是解耦。再仔細看看,主函數調函數是在同
    發表于 04-08 10:36

    ajax調方法名使用什么事件,ajax的調函數和匿名函數 精選資料分享

    1.什么是js調函數一. 調函數的作用js代碼會至上而下一條線執行下去,但是有時候我們
    發表于 09-01 07:15

    如何將對象傳遞給BLE調函數

    調中訪問該類的成員對象。我希望將 this 指針作為參數傳遞,但寄存器函數需要特定的結構。有什么方法可以將會員數據放入
    發表于 04-13 06:12

    LabWindows/CVI 程序 調函數設計

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

    調函數的詳細資料說明

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

    C語言函數調函數

    來源:嵌入式客棧 1 什么是調函數?首先什么是調呢? 我的理解是:把一段可執行的代碼像參數
    的頭像 發表于 09-11 09:57 ?4356次閱讀

    詳解調函數的概念及使用步驟

    調函數就是一個被作為參數傳遞函數。在C語言中,
    的頭像 發表于 05-26 15:20 ?4325次閱讀

    一文詳解C/C++調函數

    首先看一下調函數的官方解釋:調函數就是一個通過函數
    的頭像 發表于 02-12 09:20 ?1876次閱讀

    函數指針和調函數的使用方法

    了解開發語言的朋友應該都會對調函數有所了解,在很多的程序開發語言中都能看到調的身影。很多場景下,當某個條件成立以后我們希望代碼執行某些指
    的頭像 發表于 04-10 15:08 ?1373次閱讀

    C語言技巧之調函數

    在講調函數之前,我們需要了解函數指針。
    的頭像 發表于 04-18 11:50 ?1018次閱讀

    調函數(callback)是什么?調函數的實現方法

    調函數是一種特殊的函數,它作為參數傳遞給另一個函數
    發表于 03-12 11:46 ?3790次閱讀