<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>
"); //-->

博客專(zhuān)欄

EEPW首頁(yè) > 博客 > Linux C - C基礎篇八(函數)

Linux C - C基礎篇八(函數)

發(fā)布人:嵌入式Linux 時(shí)間:2023-01-12 來(lái)源:工程師 發(fā)布文章
概念

函數可以被看作是一個(gè)由用戶(hù)定義的一系列操作的集合。一般來(lái)說(shuō),函數用一個(gè)名字來(lái)表示。函數的操作數,稱(chēng)為參數,由一個(gè)位于括號中,并且用逗號分隔的參數列表指定,如果該函數沒(méi)有參數需要傳入,則這個(gè)列表為空,或者僅有關(guān)鍵字void;函數的結果被稱(chēng)為返回值,返回值的類(lèi)型被稱(chēng)為函數返回類(lèi)型,不產(chǎn)生返回值的函數,返回類(lèi)型是void,意思是什么都不返回;函數執行的動(dòng)作在函數體中指定,函數體包含在一對花括號中。函數返回類(lèi)型、以及其后的函數名、參數列表和函數體構成了函數定義:

返回值類(lèi)型 函數名(參數列表)

{

函數體

}

用戶(hù)自定義函數

如下,函數的名字是sum,返回值類(lèi)型是int,有兩個(gè)參數分別是int型的a和int型的b。

函數聲明由函數返回類(lèi)型、函數名、參數列表構成,由";"結尾,這三個(gè)元素被稱(chēng)為函數聲明或函數原型。函數原型描述的是函數的接口,它詳細描述了調用函數時(shí)需要提供的參數的類(lèi)型和個(gè)數,以及函數返回值的類(lèi)型。一個(gè)函數可在一個(gè)文件中被聲明多次,一個(gè)函數通常需要先聲明,然后才能被調用。例如上面的sum函數聲明如下:

int sum(int a, int b);

庫函數

庫函數就是把一些常用的函數放到庫里,供別人使用的一種方式。調用的時(shí)候把它所在的文件名用#include<>加到里面就可以了。庫函數一般是放到lib文件里的。庫函數的源代碼一般是不可見(jiàn)的,但在頭文件中(xxx.h)你可以看到它對外的接口。下面就是調用lib里面的庫函數printf打印內容到終端的實(shí)例,因為庫函數printf再頭文件stdio.h中聲明,所以需要使用#include<stdio.h>來(lái)引用,在添加引用后,編譯器才能在調用這個(gè)函數的時(shí)候找到它。

函數調用

函數調用通常需要先聲明,然后再調用。庫函數的調用,直接包含它所在的頭文件即可#include <xxx.h>。如果是我們自己定義的函數,如果再文件內調用,則只需在調用之前聲明這個(gè)函數即可;如果是在文件外調用,我們通常將這個(gè)函數聲明寫(xiě)在一個(gè)頭文件中,例如xxx.h中,然后在調用的地方通過(guò)#include "xxx.h"即可調用。

回調函數

舉個(gè)例子,酒店提供叫醒服務(wù),但是要求客人自己決定叫醒的方法??梢允谴蚩头侩娫?huà),也可以是派服務(wù)員去敲門(mén),睡得死怕耽誤事的,還可以要求往自己頭上澆涼水等等。這里,“叫醒”這個(gè)服務(wù)是酒店提供的,相當于庫函數,但是叫醒的方式是由旅客決定并告訴酒店的,也就是回調函數。而旅客告訴酒店怎么叫醒自己的動(dòng)作,也就是把回調函數傳入庫函數的動(dòng)作,稱(chēng)為注冊(register)回調函數,也就是說(shuō)回調函數注冊后不會(huì )里面調用,而是等到需要調用的時(shí)候再回來(lái)調用。

如上面我的的回調函數的例子,其中register_service就是用來(lái)注冊回調函數的,注冊的目的就是現在不調用,但是在需要回調的時(shí)候,我可以找到這個(gè)函數。上面的service_zhangSan、service_liSi就是回調函數,所以看來(lái)回調函數和普通的函數并沒(méi)有區別,只不過(guò)是使用的場(chǎng)景不同。

不定參函數

我們平時(shí)常用的函數參數個(gè)數都是固定的,但是有時(shí)候也會(huì )用到一些參數不固定的函數,例如printf等一系列函數,這些函數的參數的個(gè)數是不確定的。下面我寫(xiě)個(gè)簡(jiǎn)單的例子來(lái)闡述下不定參函數的實(shí)現:


*博客內容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀(guān)點(diǎn),如有侵權請聯(lián)系工作人員刪除。

紅外熱像儀相關(guān)文章:紅外熱像儀原理
熱像儀相關(guān)文章:熱像儀原理
汽車(chē)防盜機相關(guān)文章:汽車(chē)防盜機原理


關(guān)鍵詞: 函數

相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>