熱門(mén): 51單片機(jī) | 24小時(shí)必答區(qū) | 單片機(jī)教程 | 單片機(jī)DIY制作 | STM32 | Cortex M3 | 模數(shù)電子 | 電子DIY制作 | 音響/功放 | 拆機(jī)樂(lè)園 | Arduino | 嵌入式OS | 程序設(shè)計(jì)
![]() |
函數(shù)定義了兩個(gè)靜態(tài)變量,1個(gè) unsigned char 類(lèi)型,1個(gè)自定義的結(jié)構(gòu)體類(lèi)型 typedef struct { unsigned char state; unsigned char time_target; unsigned char temp; unsigned char i; } STATUS_VAL; 聲明了一個(gè)名為 ai 的變量,該變量具有以下性質(zhì): ① 靜態(tài)存儲(chǔ)類(lèi)型(在程序執(zhí)行過(guò)程一直存在) 第一次進(jìn)入到 ai() 函數(shù)時(shí),定義一個(gè)類(lèi)型為 STATUS_VAL 的變量 ai,并且在跳出 ai() 函數(shù)時(shí)不丟棄該變量。 第二次以及之后進(jìn)入到 ai() 函數(shù)時(shí)不再定義變量 ai。STATUS_VAL 是定義的結(jié)構(gòu)類(lèi)型名,相當(dāng)于 int,char,double 之類(lèi)的。 ② 塊作用域(從 ai() 函數(shù)的 左花括號(hào){ 到 ai 函數(shù)的 右花括號(hào)} ) 只能在 ai() 函數(shù)的代碼塊中訪問(wèn)變量 ai。 |
static STATUS_VAL ai表示定義一個(gè)STATUS_VAL型的變量ai,其為靜態(tài)變量,只初始化一次即可。 static表示靜態(tài)的,當(dāng)程序運(yùn)行時(shí)這個(gè)變量就在內(nèi)存中開(kāi)辟地址了.當(dāng)這個(gè)變量在某函數(shù)內(nèi)定義時(shí),不象自動(dòng)變量那樣,當(dāng)調(diào)用時(shí)就存在,退出函數(shù)時(shí)就消失。靜態(tài)局部變量始終存在著,也就是說(shuō)它的生存期為整個(gè)源程序。 對(duì)基本類(lèi)型的靜態(tài)局部變量若在說(shuō)明時(shí)未賦以初值,則系統(tǒng)自動(dòng)賦予0值。而對(duì)自動(dòng)變量不賦初值,則其值是不定的,非靜態(tài)局部變量在函數(shù)關(guān)閉后重新打開(kāi)時(shí)就會(huì)重置初始值,而靜態(tài)變量的值和函數(shù)本身的調(diào)用無(wú)關(guān),始終存在. |
Powered by 單片機(jī)教程網(wǎng)