




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第5章函數(shù)程序的一般組成形式#include<xx.h>main(){……..}function_1(數(shù)據(jù)類(lèi)型形參1,數(shù)據(jù)類(lèi)型形參2,…….){
執(zhí)行語(yǔ)句;
}function_n(數(shù)據(jù)類(lèi)型形參1,數(shù)據(jù)類(lèi)型形參2,…….){
執(zhí)行語(yǔ)句;
}1精選課件ppt一、函數(shù)的分類(lèi)1、用戶使用角度分:標(biāo)準(zhǔn)庫(kù)函數(shù)用戶定義(無(wú)參、有參、空函數(shù))
2、函數(shù)使用范圍分:靜態(tài)函數(shù)(內(nèi)部函數(shù)):只能在定義它的文件中被調(diào)用
static類(lèi)型說(shuō)明函數(shù)名(形參)外部函數(shù)(默認(rèn)):可以在定義它的文件和其他文件中被調(diào)用
[extern]類(lèi)型說(shuō)明函數(shù)名(形參)
2精選課件ppt二、函數(shù)的定義C51對(duì)函數(shù)的功能進(jìn)行了擴(kuò)展,函數(shù)定義的完整形式如下:函數(shù)類(lèi)型函數(shù)名(形式參數(shù)列表)[small|compact|large][reentrant][interruptn][usingn]說(shuō)明:1、[small|compact|large]:在用keilC中,當(dāng)project設(shè)置好后,可不必在函數(shù)中說(shuō)明模式,若想說(shuō)明,二者必須一致,否則出錯(cuò);2、函數(shù)定義位置主函數(shù)之前定義;(1)主函數(shù)之前原型聲明,主函數(shù)之后定義;(2)聲明格式:類(lèi)型說(shuō)明函數(shù)名(形參類(lèi)型1,形參類(lèi)型2)或者函數(shù)名(數(shù)據(jù)類(lèi)型形參1,…….,數(shù)據(jù)類(lèi)型形參n)(3)形參定義:函數(shù)名(數(shù)據(jù)類(lèi)型形參1,…….,數(shù)據(jù)類(lèi)型形參n)。
3精選課件ppt3、[reentrant]可重入函數(shù)
可重入函數(shù)可以在同一個(gè)時(shí)刻由多個(gè)進(jìn)程共享。當(dāng)一個(gè)進(jìn)程正在執(zhí)行一個(gè)可重入函數(shù),另一個(gè)進(jìn)程可以中斷該進(jìn)程,并可以開(kāi)始執(zhí)行同一個(gè)可重入函數(shù),而不影響函數(shù)的運(yùn)行結(jié)果。例:函數(shù)A正在調(diào)用函數(shù)B,此時(shí)中斷來(lái)了,執(zhí)行中斷函數(shù)C,C恰好又要調(diào)用B。
ANSIC語(yǔ)言中,調(diào)用函數(shù)時(shí)會(huì)把函數(shù)的參數(shù)和函數(shù)中使用的局部變量入棧。因?yàn)?051內(nèi)部堆??臻g的限制,為了提高效率,C51沒(méi)有提供這種堆棧,而是提供一種壓縮棧。每個(gè)函數(shù)有一個(gè)給定存儲(chǔ)空間,用于存放局部變量。函數(shù)中的每個(gè)變量都存放在這個(gè)空間的固定位置。當(dāng)遞歸調(diào)用該過(guò)程時(shí)會(huì)導(dǎo)致變量被覆蓋,所以通常情況下C51中的函數(shù)是不能重入。必須使用reentrant函數(shù)屬性來(lái)聲明函數(shù)是可重入的。
C51編譯器為再入函數(shù)生成一個(gè)模擬棧,通過(guò)這個(gè)模擬棧來(lái)完成參數(shù)傳遞和存放局部變量(每個(gè)變量有其單獨(dú)的空間)??芍厝牒瘮?shù)占用內(nèi)存空間較大,運(yùn)行較慢,并且不允許傳遞bit類(lèi)型的變量,也不能定義局部位變量??芍厝牒瘮?shù)經(jīng)常在實(shí)時(shí)應(yīng)用系統(tǒng)中應(yīng)用,也可在中斷函數(shù)和非中斷函數(shù)同時(shí)調(diào)用同一個(gè)函數(shù)時(shí)使用。4精選課件ppt可使用using函數(shù)說(shuō)明屬性來(lái)規(guī)定函數(shù)所使用的寄存器組。格式如下:usingn
:n為0-3這個(gè)參數(shù)表示使用的寄存器組的編號(hào).using屬性只能在函數(shù)定義中使用,不能在函數(shù)原型聲明中使用。使用using屬性的函數(shù)將自動(dòng)完成以下操作:a、進(jìn)入函數(shù)前,將當(dāng)前使用的寄存器組的標(biāo)號(hào)保存在堆棧中。改PSW的寄存器組選擇位,選擇設(shè)定的寄存器組作為當(dāng)前的寄存器組。b、函數(shù)退出時(shí),將寄存器組恢復(fù)成進(jìn)入函數(shù)前的寄存器組。
intalarm; intalarm_count; externvoidalfunc(intiValue); voidfalarm(void)using3{ alarm_count++;
alfunc(alarm=1);} 5精選課件ppt三、函數(shù)的參數(shù)1、形參與實(shí)參:實(shí)參-〉形參:?jiǎn)蜗騻鬟f(值傳遞);實(shí)參、形參類(lèi)型必須一致;數(shù)組作為參數(shù),是“地址傳遞”。即傳遞的為實(shí)參數(shù)數(shù)組的起始地址,故實(shí)參、形參數(shù)組占用同一段單元,互相影響。2、參數(shù)的傳遞規(guī)則:參數(shù)傳遞的途徑有:寄存器、存儲(chǔ)器、堆棧。返回值均通過(guò)寄存器傳遞。利用寄存器傳遞參數(shù)(例)intf(inta,intb,char*c)傳遞參數(shù)char,指針(單字節(jié))int,指針(雙字節(jié))long,float通用指針參數(shù)1R7R6,R7R4-R7R1(L),R2(H)R3:存儲(chǔ)類(lèi)型參數(shù)2R5R4,R5使用固定地址同上參數(shù)3R3R2,R3使用固定地址同上6精選課件ppt返回參數(shù)傳遞返回類(lèi)型寄存器描述bit進(jìn)位標(biāo)志(CF)charR7unsignedchar單字節(jié)指針intR6&R7高字節(jié)在R6,低字節(jié)在R7unsignedint雙字節(jié)指針longR4-R7高字節(jié)R4,低字節(jié)在R7unsignedlongfloatR4-R732位IEEE格式通用指針R1-R3存儲(chǔ)器類(lèi)型在R3,高字節(jié)在R2,低字節(jié)R17精選課件ppt四、函數(shù)的調(diào)用1、函數(shù)指針調(diào)用函數(shù):編譯器為函數(shù)分配一個(gè)入口地址,即指針函數(shù)。指針變量定義
函數(shù)值返回類(lèi)型
(*指針變量名)(函數(shù)形參表)#include<reg51.h>#include<stdio.h>unsignedlongc;
unsignedlongf(intn)reentrant{unsignedlongresult;if(n==0)result=1;elseresult=n*f(n-1);return(result);}8精選課件pptvoidmain(){intj;longint(*p)(int);#ifndefMONITOR51SCON=0x50;/*SCON:mode1,8-bitUART,enablercvr*/TMOD|=0x20;/*TMOD:timer1,mode2,8-bitreload*/TH1=221;/*TH1:reloadvaluefor1200baud@16MHz*/TR1=1;/*TR1:timer1run*/TI=1;/*TI:setTItosendfirstcharofUART*/#endif
p=f;for(j=0;j<10;j++){c=(*p)(j);printf("%2d!=%lu\n",j,c); if(j==8)P1=0;//調(diào)試用
}}9精選課件ppt2、幾點(diǎn)說(shuō)明(*p)()定義一個(gè)指向函數(shù)的指針變量,在未賦值前不特定指
向某函數(shù),賦
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2026學(xué)年新七年級(jí)上學(xué)期開(kāi)學(xué)摸底考試語(yǔ)文試卷(湖南專(zhuān)用)
- 【物理】2025屆高考模擬預(yù)測(cè)練習(xí)卷(北京卷)(解析版)
- 2026年中考?xì)v史一輪復(fù)習(xí):中國(guó)古代史 學(xué)案(含配套練習(xí)題及答案)
- 2025年云南高考化學(xué)試題(含答案詳解)
- 2026高考生物一輪復(fù)習(xí)講義:第一單元 細(xì)胞的概述及其分子組成(含答案)
- 2025人教版七年級(jí)數(shù)學(xué)(下)期末測(cè)試卷二(含答案)
- 2025年體育知識(shí)競(jìng)賽籃球知識(shí)競(jìng)賽題庫(kù)及答案
- 辦公室法律基礎(chǔ)知識(shí)培訓(xùn)課件
- 辦公室安全培訓(xùn)教學(xué)課件
- 廢舊輪胎資源化利用項(xiàng)目2025年投資風(fēng)險(xiǎn)可行性分析報(bào)告
- 斷絕父母子女協(xié)議書(shū)
- 2025屆湖南省長(zhǎng)沙市麓山國(guó)際實(shí)驗(yàn)學(xué)校八下物理期末質(zhì)量檢測(cè)試題含解析
- 《神經(jīng)鞘瘤影像學(xué)》課件
- 2025屆河南省南陽(yáng)市高三下學(xué)期第二次調(diào)研考試物理檢測(cè)試卷(含答案)
- 門(mén)診治療室的管理
- 2025-2030中國(guó)米糠油行業(yè)市場(chǎng)發(fā)展趨勢(shì)與前景展望戰(zhàn)略研究報(bào)告
- 新疆第二醫(yī)學(xué)院《現(xiàn)代醫(yī)學(xué)電子儀器原理與設(shè)計(jì)》2023-2024學(xué)年第二學(xué)期期末試卷
- 老年患者譫妄的安全管理
- 機(jī)械工業(yè)環(huán)境保護(hù)設(shè)計(jì)規(guī)范2025年
- 變電站消防知識(shí)培訓(xùn)課件
- 2023年全國(guó)電賽高職高專(zhuān)組綜合測(cè)評(píng)題目時(shí)分閃光燈電路
評(píng)論
0/150
提交評(píng)論