北京工商大學(xué) 編譯原理第013章
《北京工商大學(xué) 編譯原理第013章》由會員分享,可在線閱讀,更多相關(guān)《北京工商大學(xué) 編譯原理第013章(71頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
1、第十三章第十三章 運(yùn)行時存儲空間的組織運(yùn)行時存儲空間的組織第一節(jié)第一節(jié) 變量及存儲分配變量及存儲分配 程序投入運(yùn)行的必要條件:程序投入運(yùn)行的必要條件:u一組可運(yùn)行的一組可運(yùn)行的代碼代碼u一個運(yùn)行一個運(yùn)行環(huán)境環(huán)境 分配空間、提供運(yùn)行信息分配空間、提供運(yùn)行信息1.代碼空間代碼空間:線性存放著目標(biāo)指令序列線性存放著目標(biāo)指令序列 在在GAM中中,當(dāng)前執(zhí)行的指令位置由當(dāng)前執(zhí)行的指令位置由指令指針指令指針ip指示。指示。2.數(shù)據(jù)空間數(shù)據(jù)空間 變量、常數(shù)、控制和管理信息、變量、常數(shù)、控制和管理信息、描述符等描述符等一一.程序的存儲空間程序的存儲空間(1)靜態(tài)分配靜態(tài)分配:在運(yùn)行前就可確定數(shù)據(jù)空間的大小在運(yùn)行
2、前就可確定數(shù)據(jù)空間的大小,在編譯時刻就能進(jìn)行的存儲分配在編譯時刻就能進(jìn)行的存儲分配(2)動態(tài)分配動態(tài)分配 運(yùn)行時才能進(jìn)行的存儲分配運(yùn)行時才能進(jìn)行的存儲分配u棧分配棧分配:變量生存期的嵌套性變量生存期的嵌套性u堆分配堆分配:生存期的隨機(jī)交叉特性生存期的隨機(jī)交叉特性數(shù)據(jù)空間的分配策略數(shù)據(jù)空間的分配策略二二.活動記錄活動記錄 單元實(shí)例單元實(shí)例=代碼段代碼段+活動記錄活動記錄活動記錄記錄了程序單元的活動記錄記錄了程序單元的一次激活一次激活所需的所需的信息和數(shù)據(jù)信息和數(shù)據(jù)。如果是棧分配,一個單元的每次激如果是棧分配,一個單元的每次激活,都應(yīng)建立相應(yīng)的活動記錄?;?,都應(yīng)建立相應(yīng)的活動記錄。1.活動記錄的內(nèi)
3、容活動記錄的內(nèi)容(1)返回地址返回地址(2)動態(tài)鏈和靜態(tài)鏈動態(tài)鏈和靜態(tài)鏈(3)形式單元形式單元(4)變量存儲區(qū):變量存儲區(qū):包括局部變量或其描述符、臨時變量包括局部變量或其描述符、臨時變量返回地址返回地址動態(tài)鏈動態(tài)鏈靜態(tài)鏈靜態(tài)鏈變量存儲區(qū)變量存儲區(qū)形式單元形式單元注:省略了注:省略了CPU現(xiàn)場現(xiàn)場 2.活動記錄的特點(diǎn)活動記錄的特點(diǎn) 除了變量存儲區(qū)外除了變量存儲區(qū)外,其余部分存儲長其余部分存儲長度度編譯時編譯時可以確定可以確定,則元素則元素i的地址為的地址為 D+offset(i)其中其中,D是活動記錄的首地址是活動記錄的首地址 offset(i)是是i在活動記錄中的位移在活動記錄中的位移三三.
4、變量的存儲分配變量的存儲分配 1.靜態(tài)變量靜態(tài)變量:不管在程序單元的哪不管在程序單元的哪一次激活一次激活,均綁定于相同的存儲位置均綁定于相同的存儲位置 條件條件:活動記錄和變量的存儲位活動記錄和變量的存儲位置在編譯時可以確定置在編譯時可以確定 2.半靜態(tài)變量半靜態(tài)變量:編譯時確定相對位編譯時確定相對位置置,單元被激活后單元被激活后,x綁定于綁定于D+offset(x)條件條件:語言允許語言允許遞歸調(diào)用遞歸調(diào)用 3.半動態(tài)變量半動態(tài)變量:如如半半動態(tài)數(shù)組動態(tài)數(shù)組(數(shù)組大小在運(yùn)行時才確數(shù)組大小在運(yùn)行時才確定,確定后,不能夠改變定,確定后,不能夠改變)int a m.n;在活動記錄(對應(yīng)數(shù)組定義的位
5、置)在活動記錄(對應(yīng)數(shù)組定義的位置)安排描述符安排描述符;數(shù)組的存儲空間安排在數(shù)組的存儲空間安排在活動記錄的最后;活動記錄的最后;對半動態(tài)數(shù)組對半動態(tài)數(shù)組 a 描述符包含兩個部分:描述符包含兩個部分:一是一是a在活動記錄中存儲空間的的首在活動記錄中存儲空間的的首地址地址 另一個部分則記錄了動態(tài)數(shù)組另一個部分則記錄了動態(tài)數(shù)組(每一每一維的維的)上、下界等其他信息上、下界等其他信息4.動態(tài)變量動態(tài)變量:某些數(shù)據(jù)對象,存儲區(qū)域的大小在某些數(shù)據(jù)對象,存儲區(qū)域的大小在運(yùn)行時仍有可能發(fā)生變化運(yùn)行時仍有可能發(fā)生變化 如動態(tài)數(shù)組如動態(tài)數(shù)組(數(shù)組大小在運(yùn)行時才確數(shù)組大小在運(yùn)行時才確定,還可以改變定,還可以改變)
6、如類型在運(yùn)行時可以改變的變量如類型在運(yùn)行時可以改變的變量(動態(tài)類型變量)(動態(tài)類型變量)4.動態(tài)變量動態(tài)變量:即使到它所在單元被激活時,其活即使到它所在單元被激活時,其活動記錄的長度仍不能確定動記錄的長度仍不能確定 動態(tài)變量的存儲空間安排在堆中動態(tài)變量的存儲空間安排在堆中 活動記錄中為動態(tài)變量設(shè)置活動記錄中為動態(tài)變量設(shè)置2個指針個指針 一個指向該變量的描述符一個指向該變量的描述符(堆中堆中)一個指向該變量的存儲空間一個指向該變量的存儲空間(堆中堆中)1.靜態(tài)分配靜態(tài)分配 只允許靜態(tài)變量只允許靜態(tài)變量,變量與存儲區(qū)域變量與存儲區(qū)域的綁定關(guān)系在編譯時便可建立。的綁定關(guān)系在編譯時便可建立。不允許遞歸
7、調(diào)用不允許遞歸調(diào)用,不允許半動態(tài)數(shù)不允許半動態(tài)數(shù)組組,不允許動態(tài)類型的數(shù)據(jù)對象不允許動態(tài)類型的數(shù)據(jù)對象,即不即不允許有非靜態(tài)變量。如允許有非靜態(tài)變量。如:FORTRAN。四四.活動記錄存儲分配模式活動記錄存儲分配模式 2.棧式分配棧式分配u單元之間的調(diào)用關(guān)系遵循單元之間的調(diào)用關(guān)系遵循LIFO模式模式;u活動記錄的建立和撤消也滿足活動記錄的建立和撤消也滿足LIFO;u分配方法分配方法 當(dāng)激活一個程序單元時當(dāng)激活一個程序單元時,其活動記錄就動態(tài)地分配于棧頂。其活動記錄就動態(tài)地分配于棧頂。P的活動記錄的活動記錄Q的活動記錄的活動記錄R的活動記錄的活動記錄如:如:P調(diào)用調(diào)用Q,Q調(diào)用調(diào)用R.3.堆分配
8、堆分配 出現(xiàn)下列情況時出現(xiàn)下列情況時,使用堆式分配使用堆式分配:(1)單元活動結(jié)束后單元活動結(jié)束后,局部變量的值還局部變量的值還需保留需保留;(C語言有特別的處理方式語言有特別的處理方式)(2)調(diào)用單元與被調(diào)用單元的生存期調(diào)用單元與被調(diào)用單元的生存期出現(xiàn)出現(xiàn)交叉交叉現(xiàn)象?,F(xiàn)象。4.存儲空間的組織存儲空間的組織代碼代碼全局變量和常量數(shù)據(jù)全局變量和常量數(shù)據(jù)棧棧堆堆第二節(jié)第二節(jié) 靜態(tài)分配靜態(tài)分配FORTRAN語言的特點(diǎn)語言的特點(diǎn) 1.模塊結(jié)構(gòu)模塊結(jié)構(gòu) 一個主程序段和若干個一個主程序段和若干個(可以是可以是0個個)輔輔程序段組成程序段組成;輔程序段可以是子程序、函數(shù)輔程序段可以是子程序、函數(shù)段或數(shù)據(jù)塊
9、;各段可以獨(dú)立編譯。段或數(shù)據(jù)塊;各段可以獨(dú)立編譯。2.說明語句無嚴(yán)格語序說明語句無嚴(yán)格語序,且具有顯式說且具有顯式說明和隱式說明。明和隱式說明。3.公用公用(COMMON)和等價和等價(EQUIVALENCE)語句建立了數(shù)據(jù)空間的語句建立了數(shù)據(jù)空間的同一性(數(shù)據(jù)共享)。同一性(數(shù)據(jù)共享)。4.不允許過程的遞歸性不允許過程的遞歸性;每個數(shù)據(jù)名所需的存儲空間大小都是每個數(shù)據(jù)名所需的存儲空間大小都是常量常量;所有數(shù)據(jù)名的性質(zhì)是確定的。所有數(shù)據(jù)名的性質(zhì)是確定的。一一.FORTRAN程序運(yùn)行時的結(jié)構(gòu)程序運(yùn)行時的結(jié)構(gòu) 每個單元的活動記錄在運(yùn)行前可建立每個單元的活動記錄在運(yùn)行前可建立 其生存期延續(xù)到整個程序
10、結(jié)束。其生存期延續(xù)到整個程序結(jié)束。(1)(1)變量約束于活動記錄的常量位移變量約束于活動記錄的常量位移變量的引用采用二元式變量的引用采用二元式 (單元名單元名,變量在活動記錄中的變量在活動記錄中的位移位移)指令的引用也可采用二元式指令的引用也可采用二元式 (單元名單元名,指令在代碼段中的,指令在代碼段中的位移位移)1.FORTRAN程序編譯過程程序編譯過程(2)連接時連接時 將程序所有單元連接起來,將程序所有單元連接起來,將代碼段分配到代碼區(qū),將代碼段分配到代碼區(qū),活動記錄分配到數(shù)據(jù)區(qū)?;顒佑涗浄峙涞綌?shù)據(jù)區(qū)。將(編譯時)二元式轉(zhuǎn)換為地址。將(編譯時)二元式轉(zhuǎn)換為地址。(3)裝入時裝入時 將連接
11、后的可重定位代碼裝入主存將連接后的可重定位代碼裝入主存儲器并定位,儲器并定位,成為可直接執(zhí)行的機(jī)器代碼,成為可直接執(zhí)行的機(jī)器代碼,并將并將ip指向第一條指令,指向第一條指令,程序處于可執(zhí)行狀態(tài)。程序處于可執(zhí)行狀態(tài)。2.FORTRAN程序在程序在GAM中的存儲結(jié)構(gòu)中的存儲結(jié)構(gòu)單元單元1代碼段代碼段單元單元2代碼段代碼段單元單元n代碼段代碼段全局?jǐn)?shù)據(jù)全局?jǐn)?shù)據(jù)單元單元1活動記錄活動記錄單元單元2活動記錄活動記錄單元單元n活動記錄活動記錄.ip二二.運(yùn)行環(huán)境的轉(zhuǎn)換運(yùn)行環(huán)境的轉(zhuǎn)換約定:約定:ud unit_name,j:unit_name的活動記錄的活動記錄中位移為中位移為j的存儲單元內(nèi)容的存儲單元內(nèi)容
12、uc unit_name,j:unit_name的代碼段中的代碼段中位移為位移為j的指令的指令uD m,Cm:連接后的實(shí)際存儲地址:連接后的實(shí)際存儲地址u&X:X 的地址的地址1.GOTO X ip:=&c unit_name,j 其其中中,cunit_name,j是是編編譯譯后后標(biāo)標(biāo)號號X對對應(yīng)應(yīng)的指令的指令轉(zhuǎn)換(翻譯)轉(zhuǎn)換(翻譯)(1)保存返回地址保存返回地址 d P,0 :=ip+2 (2)轉(zhuǎn)入轉(zhuǎn)入P ip:=&c P,0 連接后:連接后:D m :=ip+2 ip:=nm為為P的活動記錄的首址的活動記錄的首址;n為為P代碼段首址代碼段首址2.過程調(diào)用語句過程調(diào)用語句CALL P取返回地
13、址取返回地址 ip:=d P,0 連接后連接后 ip:=D m 其中其中 m 是單元是單元P的活動記錄的首址的活動記錄的首址3.返回語句返回語句 RETURN舉例舉例:INTEGER I,J /*主程序主程序*/COMMON I CALL X GOTO 1010 CONTINUE END SUBROUTINE X /*子程序子程序*/INTEGER K,J COMMON I K=5 I =6 J =I+K RETURN ENDD3:=ip+2ip:=5ip:=3noophaltD4:=5D0:=6D5:=D0+D4ip:=D3halt0123 4 5 6 7 8 9代碼存儲器012345com
14、monmainXI返回地址J返回地址KJip=0數(shù)據(jù)存儲器D3:=ip+2ip:=5ip:=3noophaltD4:=5D0:=6D5:=D0+D4ip:=D3halt0123 4 5 6 7 8 9012345commonmainXI返回地址J返回地址KJip=5數(shù)據(jù)存儲器2D3:=ip+2ip:=5ip:=3noophaltD4:=5D0:=6D5:=D0+D4ip:=D3halt0123 4 5 6 7 8 9012345commonmainXI返回地址J返回地址KJip=7數(shù)據(jù)存儲器625D3:=ip+2ip:=5ip:=3noophaltD4:=5D0:=6D5:=D0+D4ip:=
15、D3halt0123 4 5 6 7 8 9012345commonmainXI返回地址J返回地址KJip=2數(shù)據(jù)存儲器62511D3:=ip+2ip:=5ip:=3noophaltD4:=5D0:=6D5:=D0+D4ip:=D3halt0123 4 5 6 7 8 9第三節(jié)第三節(jié) 棧式分配棧式分配u語言特點(diǎn):語言特點(diǎn):允許遞歸允許遞歸 允許半動態(tài)數(shù)組允許半動態(tài)數(shù)組 允許過程嵌套定義允許過程嵌套定義1.特點(diǎn):特點(diǎn):僅允許遞歸調(diào)用僅允許遞歸調(diào)用 變量及活動記錄長度可靜態(tài)確定變量及活動記錄長度可靜態(tài)確定 一個單元可多次激活而有多個實(shí)例一個單元可多次激活而有多個實(shí)例 單元每次激活時動態(tài)建立活動記錄
16、單元每次激活時動態(tài)建立活動記錄 一一.只含半靜態(tài)變量的棧式分配只含半靜態(tài)變量的棧式分配(1)設(shè)置當(dāng)前棧指針設(shè)置當(dāng)前棧指針current 表示當(dāng)前活動記錄的開始位置表示當(dāng)前活動記錄的開始位置(2)指針指針free 表示數(shù)據(jù)存儲器下一個可用單元表示數(shù)據(jù)存儲器下一個可用單元(3)變變量量綁綁定定于于它它在在活活動動記記錄錄中中的的常常數(shù)數(shù)位移位移,通過通過current變址訪問變址訪問2.處理方法處理方法(4)A調(diào)用調(diào)用B時,時,在在A活活動動記記錄錄的的棧棧頂頂之之上上建建立立綁綁定定于于B的的活動記錄的的活動記錄(5)B結(jié)束時結(jié)束時 釋放其活動記錄釋放其活動記錄 動態(tài)連接:動態(tài)連接:A調(diào)調(diào)用用B
17、時時,B的的活活動動記記錄錄中中保保存存的的A的活動記錄地址的活動記錄地址 動態(tài)鏈:動態(tài)鏈:由動態(tài)連接組成的一個調(diào)用鏈由動態(tài)連接組成的一個調(diào)用鏈3.動態(tài)連接和動態(tài)鏈動態(tài)連接和動態(tài)鏈AEFGFA call E;E call F;F call G;G call F;.(1)保存返回地址保存返回地址 D free :=ip+5 或或 20(2)保存主調(diào)過程的保存主調(diào)過程的current D free+1:=current(3)建立建立P的的current current:=free(4)調(diào)整調(diào)整free free:=free+L(5)轉(zhuǎn)子轉(zhuǎn)子 ip:=&CP,0 P的代碼段首地址的代碼段首地址4.C
18、ALL P 的處理的處理 翻譯為翻譯為5條中間代碼條中間代碼返回地址返回地址動態(tài)連接動態(tài)連接返回地址返回地址動態(tài)連接動態(tài)連接A的活動記錄的活動記錄即將即將建立的建立的P的活動記錄的活動記錄currentfree過程過程A中調(diào)用中調(diào)用P時時 還未進(jìn)入過程還未進(jìn)入過程P返回地址返回地址動態(tài)鏈動態(tài)鏈返回地址返回地址動態(tài)鏈動態(tài)鏈A的活動記錄的活動記錄P的活動記錄的活動記錄currentfree進(jìn)入過程進(jìn)入過程P以后(執(zhí)行完以后(執(zhí)行完5條指令)條指令)5.RETURN語句的處理語句的處理(1)恢復(fù)恢復(fù)free free:=current(2)恢復(fù)主調(diào)過程的恢復(fù)主調(diào)過程的current current:
19、=Dcurrent+1(3)返回返回 ip:=D free二二.半動態(tài)變量的棧式分配半動態(tài)變量的棧式分配 1.活動記錄內(nèi)容活動記錄內(nèi)容 返回地址返回地址 動態(tài)鏈動態(tài)鏈 靜態(tài)鏈靜態(tài)鏈 保護(hù)區(qū)保護(hù)區(qū) 參數(shù)單元參數(shù)單元 局部變量局部變量 臨時變量臨時變量 數(shù)組存儲區(qū)數(shù)組存儲區(qū)其中,局部變量中包括數(shù)組的描述符其中,局部變量中包括數(shù)組的描述符2.半動態(tài)數(shù)組空間的分配半動態(tài)數(shù)組空間的分配(1)編譯時,分配內(nèi)情向量表區(qū),編譯時,分配內(nèi)情向量表區(qū),產(chǎn)產(chǎn)生生在在運(yùn)運(yùn)行行時時動動態(tài)態(tài)建建立立內(nèi)內(nèi)情情向向量量和和分分配配數(shù)組空間的指令數(shù)組空間的指令;(2)一一個個單單元元激激活活后后(進(jìn)進(jìn)入入該該單單元元),遇遇到
20、到半半動動態(tài)態(tài)數(shù)數(shù)組組說說明明時時,調(diào)調(diào)用用上上述述指指令令(填填內(nèi)內(nèi)情向量,分配數(shù)組空間),并調(diào)整情向量,分配數(shù)組空間),并調(diào)整 free:=free+L。三三.動態(tài)變量的存儲分配動態(tài)變量的存儲分配 在堆上進(jìn)行存儲分配在堆上進(jìn)行存儲分配;動態(tài)變量的描述符和變量存儲區(qū)均分配動態(tài)變量的描述符和變量存儲區(qū)均分配在堆上在堆上非局部環(huán)境非局部環(huán)境的引用必須考慮變量的作用域的引用必須考慮變量的作用域1.靜態(tài)作用域靜態(tài)作用域規(guī)則規(guī)則最近嵌套規(guī)則最近嵌套規(guī)則 (1)嵌套的層次嵌套的層次 最外層單元為最外層單元為0層,若層,若P是是Q的直接外層,的直接外層,則則Q的層次的層次=P的層次的層次 1四四.非局部環(huán)
21、境非局部環(huán)境unit A;y:int;unit B;end B;y:int;unit C;end D;end C;.unit D;.end A;end E;z:int;unit F;end G;unit G;x,y:int;.unit E;z:=x+y;end F;.ABCDEFGx:int;變量的作用域是變量的作用域是 指可訪問該變量的指可訪問該變量的程序范圍程序范圍若在若在單元單元U1中使用中使用變量變量x (I)變變量量x在在單單元元U1中中被被說說明明,則則x的的作用域局部于作用域局部于U1;(II)變變量量x在在U1中中沒沒有有被被說說明明,則則x的的作作用用域域是是包包圍圍U1的的
22、說說明明了了x的的最最小小外外層單元。層單元。(2)最近嵌套規(guī)則最近嵌套規(guī)則2.動態(tài)作用域規(guī)則動態(tài)作用域規(guī)則 是是一一種種最最近近活活動動規(guī)規(guī)則則,對對非非局局部部變變量,引用的應(yīng)是最近外層中說明的。量,引用的應(yīng)是最近外層中說明的。動動態(tài)態(tài)作作用用域域的的最最近近外外層層指指的的是是動動態(tài)態(tài)調(diào)調(diào)用用的外層的外層 如如A-E-F-G-F的調(diào)用序列:的調(diào)用序列:當(dāng)前當(dāng)前F的調(diào)用外層為的調(diào)用外層為G。1.靜態(tài)作用域規(guī)則靜態(tài)作用域規(guī)則(1)靜態(tài)連接和靜態(tài)鏈靜態(tài)連接和靜態(tài)鏈 靜態(tài)連接:指向靜態(tài)連接:指向直接外層直接外層的最新活動的最新活動記錄的指針,記錄的指針,活動記錄位移為活動記錄位移為2 2的存儲單
23、元中。的存儲單元中。靜態(tài)鏈:各嵌套程序單元的活動記錄靜態(tài)鏈:各嵌套程序單元的活動記錄中,靜態(tài)連接的序列構(gòu)成靜態(tài)鏈。中,靜態(tài)連接的序列構(gòu)成靜態(tài)鏈。五五.對非局部環(huán)境的引用對非局部環(huán)境的引用AEFGFA call E;E call F;F call G;G call F;.P297 (2)非局部變量非局部變量x的地址的求法的地址的求法 假設(shè)假設(shè)單元單元p中引用了中引用了外層單元外層單元t中的變量中的變量x 且且p,t的深度分別為的深度分別為np,nt。設(shè)設(shè)d=np nt,將將x約束于約束于(t,offset)問題的關(guān)鍵是問題的關(guān)鍵是找找t的最新活動記錄的最新活動記錄Dt 而而Dt offset即為
24、即為x的地址。的地址。unp nt=0:x為為p中的局部變量中的局部變量 Dt=currentunp nt=1:t是是p的直接外層的直接外層 Dt Dcurrent+2unp nt=2:t是是p的再外層的再外層 Dt=DDcurrent+2+2unp nt=3:t是是p的再外層的外層的再外層的外層 Dt=DDDcurrent+2 2 2令令np nt=d,則則 f(d):=if d=0 then current else Df(d-1)+2 沿沿p的靜態(tài)鏈在棧中向下搜索的靜態(tài)鏈在棧中向下搜索d步。步。即uf(0)=current uf(1)Dcurrent+2uf(2)=DDcurrent+2
25、+2u(3)靜態(tài)連接的確定靜態(tài)連接的確定 單元單元A調(diào)用單元調(diào)用單元B的幾種情形的幾種情形:(3)nA-nB=1(4)nA-nB1B0B0(1)nA-nB=-1B0ABcall BBAcall BBcall BA(2)nA-nB=0B0BAcall B(1)nA-nB=-1,B的靜態(tài)連接的靜態(tài)連接=f(0)(2)nA-nB=0,B的靜態(tài)連接的靜態(tài)連接=f(1)(3)nA-nB=1,B的靜態(tài)連接的靜態(tài)連接=f(2)(4)nA-nB=d,B的靜態(tài)連接的靜態(tài)連接=f(d+1)靜態(tài)連接靜態(tài)連接 D free+1:=f(d+1)(4)調(diào)用語句調(diào)用語句call B 的處理的處理 Dfree:=ip+6 D
26、free+1:=current Dfree+2:=f(d+1)current:=free free:=free+L ip:=B 的代碼段首址的代碼段首址 2.動態(tài)作用域規(guī)則動態(tài)作用域規(guī)則 此時,靜態(tài)連接是一指針此時,靜態(tài)連接是一指針 指向動態(tài)調(diào)用直接外層的活動記錄指向動態(tài)調(diào)用直接外層的活動記錄 其實(shí)與其實(shí)與動態(tài)連接動態(tài)連接一致。一致。1.程序單元間通信方式程序單元間通信方式 非局部環(huán)境和參數(shù)傳遞非局部環(huán)境和參數(shù)傳遞2.參數(shù)參數(shù) 形參,實(shí)參形參,實(shí)參3.形參三種類型形參三種類型 數(shù)據(jù)參數(shù),過程參數(shù),類型參數(shù)數(shù)據(jù)參數(shù),過程參數(shù),類型參數(shù)第五節(jié)第五節(jié) 參數(shù)傳遞參數(shù)傳遞一一.數(shù)據(jù)參數(shù)數(shù)據(jù)參數(shù)(3(3種
27、參數(shù)傳遞方式種參數(shù)傳遞方式)引址調(diào)用引址調(diào)用 值調(diào)用值調(diào)用 名調(diào)用名調(diào)用傳值傳值 得結(jié)果得結(jié)果 傳值得結(jié)果傳值得結(jié)果program main var A,B:integer;procedure P(x,y,z);begin y:=y+1;z:=z+x end;begin A:=2;B:=3;P(A+B,A,A);write(A)end 將實(shí)參的地址傳遞給對應(yīng)的形參,將實(shí)參的地址傳遞給對應(yīng)的形參,作為作為形參的地址形參的地址形參與實(shí)參是形參與實(shí)參是別名別名。PASCAL:變量參數(shù)變量參數(shù) C+:引用參數(shù)引用參數(shù)1.引用調(diào)用(傳地址)引用調(diào)用(傳地址)(1)傳值傳值(單向單向):實(shí)參的值實(shí)參的值形
28、參形參(2)結(jié)果調(diào)用結(jié)果調(diào)用(單向單向):形參的結(jié)果值形參的結(jié)果值實(shí)參實(shí)參(3)傳值得結(jié)果傳值得結(jié)果(雙向雙向):實(shí)參的值實(shí)參的值形參形參 形參的結(jié)果值形參的結(jié)果值實(shí)參實(shí)參2.值調(diào)用值調(diào)用3.名調(diào)用(換名)名調(diào)用(換名)u用實(shí)參用實(shí)參名字名字原樣替換形參原樣替換形參u把實(shí)參用把實(shí)參用括號括號括起來括起來u若被調(diào)用單元的局部變量名與主調(diào)若被調(diào)用單元的局部變量名與主調(diào)單元的變量名發(fā)生沖突,則對局部單元的變量名發(fā)生沖突,則對局部名重新命名名重新命名二二.過程參數(shù)的傳遞過程參數(shù)的傳遞(略)(略)三三.類型參數(shù)類型參數(shù)(略)(略)第十三章習(xí)題第十三章習(xí)題13-2、13-4課程結(jié)束課程結(jié)束 謝謝同學(xué)們!謝謝同學(xué)們!祝祝 學(xué)業(yè)更進(jìn)一步學(xué)業(yè)更進(jìn)一步
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 人教版小學(xué)數(shù)學(xué)五年級下冊圖形的運(yùn)動(三)-1課件
- 供應(yīng)鏈管理方法
- 2019最新青島版數(shù)學(xué)一年級上冊第三單元《走進(jìn)花果山-10以內(nèi)的加減法》(信息窗6)課件
- 第四章勞動中的心理、生理狀態(tài)對安全的影響
- 201x九年級物理上冊-雙休作業(yè)八(新版)教科版課件
- 課件:項(xiàng)目一-電子商務(wù)物流系統(tǒng)規(guī)劃
- 【人教版】2012-2013學(xué)年九年級(全一冊)數(shù)學(xué)小復(fù)習(xí):第27章相似復(fù)習(xí)課件
- 消化腺(全英文)課件
- 小學(xué)語文資源五年級上冊課件《落花生》課件第一課時
- 納米材料的基本效應(yīng)課件
- 分析化學(xué)概論-課件
- 沉浸式光影解決方案課件
- 第六講加固Windows操作系統(tǒng)安全ppt課件
- 民主選舉投出理性一票ppt課件
- 高二數(shù)學(xué)選修正態(tài)分布推薦實(shí)用全套PPT