靜態(tài)函數(shù)(帶static的),外部文件無(wú)法使用該函數(shù)了,同樣的是定義靜態(tài)變量后,外部文件同樣不能使用;在工程中,通常各個(gè)模塊分開(kāi)完成,這時(shí)候如果確定自己定義的函數(shù)別的文件不會(huì)使用,就可以加上static,以保證不會(huì)被誤用;只能在本文件中使用,無(wú)法跨文件。
創(chuàng)新互聯(lián)專注于泗洪企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè),商城網(wǎng)站建設(shè)。泗洪網(wǎng)站建設(shè)公司,為泗洪等地區(qū)提供建站服務(wù)。全流程按需定制開(kāi)發(fā),專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)
靜態(tài)函數(shù)是函數(shù)的一種,函數(shù)包括靜態(tài)函數(shù)和非靜態(tài)函數(shù)兩種。
其中靜態(tài)函數(shù)是有static修飾的函數(shù),如果沒(méi)有,則為非靜態(tài)函數(shù)(全局函數(shù))。
靜態(tài)函數(shù)(帶static的),只能在本文件中使用,無(wú)法跨文件。而非靜態(tài)函數(shù)(不帶static的),可以在任何一個(gè)文件中使用。當(dāng)在其它文件中使用時(shí),需要做函數(shù)聲明后再使用。
int。C語(yǔ)言規(guī)定:在定義函數(shù)時(shí),若其返回值類型為int,則可以默認(rèn)。
C語(yǔ)言函數(shù)有三類,分為外部函數(shù)、靜態(tài)函數(shù)、內(nèi)聯(lián)函數(shù),其中前兩種是C89標(biāo)準(zhǔn)支持,第三種是C99標(biāo)準(zhǔn)增加的。
1、外部函數(shù)
這類函數(shù)是默認(rèn)的函數(shù)類型,基本上平時(shí)我們使用的就是這種函數(shù),聲明有以下兩種方式,例如:
// 使用extern關(guān)鍵字,顯示聲明
extern int add(int a, int b);
// 或省略關(guān)鍵字extern,編譯器也會(huì)自動(dòng)認(rèn)為是extern
int add(int a, int b);
外部函數(shù)表明在當(dāng)前聲明和定義的代碼文件中可以使用,也可以在其它代碼文件中可以通過(guò)#include指令包含使用,對(duì)外部的代碼可見(jiàn)。
2、靜態(tài)函數(shù)
這類函數(shù)其實(shí)與外部函數(shù)相對(duì)的,因?yàn)樾枰褂胹tatic關(guān)鍵字修飾,因此稱為靜態(tài)函數(shù),其實(shí)就是內(nèi)部函數(shù)。聲明方式如下,例如:
static int add(int a, int b);
靜態(tài)函數(shù)的作用域只能在當(dāng)前聲明和定義的文件中,在其它代碼文件中無(wú)法#include使用,因此在整個(gè)程序中,特別是大型程序,有多個(gè)源代碼文件時(shí),即使定義相同名稱的兩個(gè)靜態(tài)函數(shù),也不會(huì)有命名和使用沖突。
3、內(nèi)聯(lián)函數(shù)
是新增的特性,使用inline關(guān)鍵字聲明和定義,該類函數(shù)類似#define宏定義展開(kāi),編譯時(shí)會(huì)直接將函數(shù)定義代碼在調(diào)用的地方復(fù)制展開(kāi),這樣會(huì)減少函數(shù)調(diào)用的開(kāi)銷,提高運(yùn)行效率。
inline int add(int a, int b);
內(nèi)聯(lián)函數(shù)適合短小的、被頻繁調(diào)用的函數(shù),對(duì)于復(fù)雜函數(shù),無(wú)法使用。
擴(kuò)展資料:
C語(yǔ)言編寫(xiě)注意事項(xiàng):
1、const在聲明變量中起限制作用, 該限定變量的值不能被修改。
2、%運(yùn)算符不能應(yīng)用與float或double類型。
3、char類型轉(zhuǎn)換為int型時(shí), 無(wú)法判斷它是signed還是unsigned.這樣其結(jié)果有可能為負(fù)數(shù), 因此轉(zhuǎn)換時(shí)盡量指定signed和unsigned限制符。
4、++i與i++不同之處: ++i是先+1在使用, i++是先使用i在遞加1。
5、三元運(yùn)算符"?:" 第一個(gè)表達(dá)式的括號(hào)不是必須的,但是由于三元表達(dá)式的優(yōu)先級(jí)非常低,我們還是將第一個(gè)表達(dá)式用()括起便于閱讀和理解。
6、C語(yǔ)言中可以使用遞歸 (即函數(shù)調(diào)用自身函數(shù)), 其不節(jié)省儲(chǔ)存器開(kāi)銷也不加快執(zhí)行速度, 只是使程序緊湊便于理解。
C語(yǔ)言中static函數(shù)的具體作用是:
讓一個(gè)變量長(zhǎng)期有效,而不管其是在什么地方被申明。
避免多個(gè)文件使用了相同的變量名而導(dǎo)致沖突。
C語(yǔ)言里面的靜態(tài)函數(shù)和函數(shù)的區(qū)別是:
靜態(tài)函數(shù)是函數(shù)的一種,函數(shù)包括靜態(tài)函數(shù)和非靜態(tài)函數(shù)兩種。
靜態(tài)函數(shù)是有static修飾的函數(shù),如果沒(méi)有,則為非靜態(tài)函數(shù)(全局函數(shù))。
當(dāng)整個(gè)程序只有一個(gè)C文件時(shí),二者沒(méi)有區(qū)別,當(dāng)程序是由多個(gè)C文件組成時(shí),二者的作用域,即可使用的范圍不同。
靜態(tài)函數(shù)(帶static的),只能在本文件中使用,無(wú)法跨文件,而非靜態(tài)函數(shù)(不帶static的),可以在任何一個(gè)文件中使用。當(dāng)在其它文件中使用時(shí),需要做函數(shù)聲明后再使用。
static在c語(yǔ)言中是私有、靜態(tài)意思。
用于在函數(shù)中聲明“靜態(tài)變量”用,在每一次調(diào)用后,該變量并不在函數(shù)返回時(shí)立即釋放,變量中保存的值,可以保留到下一次調(diào)用時(shí)繼續(xù)有效。
私有就是隱藏。static函數(shù)只能聲明后的本文中調(diào)用。static全局變量只能聲明后的本文中調(diào)用。static局部變量只能聲明后的本函數(shù)調(diào)用
靜態(tài)就是一直存在,相對(duì)于每次調(diào)用動(dòng)態(tài)分配而言。static函數(shù)未驗(yàn)證是否每次調(diào)用代碼地址都是一致的。static全局變量生命周期到程序或進(jìn)程結(jié)束。static局部變量生命周期到程序或進(jìn)程結(jié)束。
static的使用和作用
靜態(tài)全局變量。全局變量前加static,修飾全局變量為靜態(tài)全局變量,改變?nèi)肿兞康目梢?jiàn)性。靜態(tài)局部變量。局部變量前加static,修飾局部變量為靜態(tài)局部變量,改變局部變量的銷毀時(shí)期。靜態(tài)函數(shù)。函數(shù)返回類型前加static,修飾函數(shù)為靜態(tài)函數(shù),改變函數(shù)的可見(jiàn)性。
類的靜態(tài)成員。類成員前加static,修飾類的成員為類的靜態(tài)成員,實(shí)現(xiàn)多個(gè)對(duì)象之間的數(shù)據(jù)共享,并且使用靜態(tài)成員不會(huì)破壞封裝性,也保證了安全性。類的靜態(tài)函數(shù),類函數(shù)前加static,修飾類的函數(shù)為靜態(tài)函數(shù),減少資源消耗,不需要實(shí)例化就可以使用。