




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、第九章第九章 運(yùn)行時存儲空間組織運(yùn)行時存儲空間組織概述概述任務(wù):編譯程序?qū)δ繕?biāo)程序運(yùn)行時的數(shù)據(jù)空間任務(wù):編譯程序?qū)δ繕?biāo)程序運(yùn)行時的數(shù)據(jù)空間的組織和管理(設(shè)計運(yùn)行環(huán)境和分配存儲)的組織和管理(設(shè)計運(yùn)行環(huán)境和分配存儲) 如如 通常棧式存儲分配布局可為:通常棧式存儲分配布局可為: 目標(biāo)代碼區(qū)目標(biāo)代碼區(qū) 靜態(tài)數(shù)據(jù)區(qū)靜態(tài)數(shù)據(jù)區(qū) Stack heap運(yùn)行環(huán)境和存儲分配運(yùn)行環(huán)境和存儲分配設(shè)計分析設(shè)計分析邏輯階段:在目標(biāo)代碼生成前,作準(zhǔn)備邏輯階段:在目標(biāo)代碼生成前,作準(zhǔn)備實(shí)質(zhì):實(shí)質(zhì): 關(guān)聯(lián)(關(guān)聯(lián)(Binding)將源程序的文本將源程序的文本 程序運(yùn)行動作的實(shí)現(xiàn)程序運(yùn)行動作的實(shí)現(xiàn) 源文件中的名字源文件中的名字N
2、 運(yùn)行時的存儲運(yùn)行時的存儲S S在語義學(xué)中,使用術(shù)語在語義學(xué)中,使用術(shù)語environment函數(shù)表示函數(shù)表示env: NS (NS (N到到S S的映射的映射) )靜靜態(tài)態(tài)文文本本中中 運(yùn)運(yùn)行行時時動動作作及及為為實(shí)實(shí)現(xiàn)現(xiàn)其其動動作作的的準(zhǔn)準(zhǔn)備備 (與與運(yùn)運(yùn)行行時時數(shù)數(shù)據(jù)據(jù)對對象象的的表表示示有有關(guān)關(guān))過過程程定定義義 過過程程名名執(zhí)執(zhí)行行過過程程體體 過過程程體體 控控制制數(shù)數(shù)據(jù)據(jù)對對象象的的分分配配,為為執(zhí)執(zhí)行行過過程程體體使使用用源源文文本本中中同同樣樣的的名名字字 目目標(biāo)標(biāo)程程序序中中不不同同的的數(shù)數(shù)據(jù)據(jù)空空間間因因?yàn)闉橐灰粋€個過過程程可可以以是是遞遞歸歸的的,這這時時同同一一個個名
3、名字字在在不不同同的的時時間間可可能能代代表表不不同同的的存存儲儲單單元元決定存儲管理復(fù)雜程度的因素源語言本身決定存儲管理復(fù)雜程度的因素源語言本身1. 允許的數(shù)據(jù)類型的多少允許的數(shù)據(jù)類型的多少2語言中允許的數(shù)據(jù)項(xiàng)是語言中允許的數(shù)據(jù)項(xiàng)是 靜態(tài)確定靜態(tài)確定 動態(tài)確定動態(tài)確定3程序結(jié)構(gòu)程序結(jié)構(gòu) 決定名字的作用域的規(guī)則和結(jié)構(gòu)決定名字的作用域的規(guī)則和結(jié)構(gòu)A 段結(jié)構(gòu)段結(jié)構(gòu)B 過程定義不嵌套,只允許過程遞歸調(diào)用過程定義不嵌套,只允許過程遞歸調(diào)用C 分程序結(jié)構(gòu)分程序結(jié)構(gòu)分程序嵌套分程序嵌套過程定義嵌套過程定義嵌套存儲分配方案策略:存儲分配方案策略: 靜態(tài)存儲分配靜態(tài)存儲分配 動態(tài)存儲分配棧式動態(tài)存儲分配棧式
4、堆式堆式聲明的作用域聲明的作用域 詞法作用域詞法作用域 動態(tài)作用域動態(tài)作用域例:例:(1)program dynamic(i,0);(2) var r:real(3) procedure show;(4) begin write(r:5:3) end;(5) procedrue small;(6) var r:real;(7) begin r:=0.125; show end;(8) begin(9) r:=0.25;(10) show; small; write/n;(11) show; small; write/n;(12) end.lexical scope0.250 0.2500.25
5、0 0.250dynamic scope0.250 0.1250.250 0.125術(shù)語術(shù)語 靜態(tài):如果一個名字的性質(zhì)通過說明語句靜態(tài):如果一個名字的性質(zhì)通過說明語句或隱或顯規(guī)則而定義,則稱這種性質(zhì)是或隱或顯規(guī)則而定義,則稱這種性質(zhì)是“靜態(tài)靜態(tài)”確定的。確定的。 動態(tài):如果名字的性質(zhì)只有在程序運(yùn)行時動態(tài):如果名字的性質(zhì)只有在程序運(yùn)行時才能知道,則稱這種性質(zhì)為才能知道,則稱這種性質(zhì)為“動態(tài)動態(tài)”確定確定的。的。 可變可變 (動態(tài)動態(tài))數(shù)組:數(shù)組: 若一個數(shù)組所需的存儲空間的大小在編若一個數(shù)組所需的存儲空間的大小在編譯時就已知道,則稱它為確定數(shù)組,否則譯時就已知道,則稱它為確定數(shù)組,否則稱為可變稱
6、為可變(動態(tài)動態(tài))數(shù)組。數(shù)組。 例例 procedure A(m,n:integer); begin real z; array Bm:n; begin end; end; 數(shù)組內(nèi)情向量數(shù)組內(nèi)情向量: 編譯中,將數(shù)組的有關(guān)信息記錄在一些單元中,稱為編譯中,將數(shù)組的有關(guān)信息記錄在一些單元中,稱為“內(nèi)“內(nèi)情向量”,確定數(shù)組,放在符號表中;可變數(shù)組,運(yùn)行時建立情向量”,確定數(shù)組,放在符號表中;可變數(shù)組,運(yùn)行時建立相應(yīng)的內(nèi)情向量。相應(yīng)的內(nèi)情向量。Al 1:u 1,l 2:u 2, ,l ln n : : u un n l1 u1 l2 u2 : : type a(首地址)(首地址) n C 過程活動記
7、錄過程活動記錄 AR:為說明方便,假定程序是由過程組成,過程區(qū)分為源文本,為說明方便,假定程序是由過程組成,過程區(qū)分為源文本,運(yùn)行時稱作過程的激活。運(yùn)行時稱作過程的激活。一個過程的一次執(zhí)行所需要的信息使用一個連續(xù)的存儲區(qū)來一個過程的一次執(zhí)行所需要的信息使用一個連續(xù)的存儲區(qū)來管理,這個區(qū)管理,這個區(qū) (塊)叫做一個活動記錄或(塊)叫做一個活動記錄或 frame(幀幀)一般這個段要記錄:一般這個段要記錄: 臨時值,如計算表達(dá)式時的中間工作單元。臨時值,如計算表達(dá)式時的中間工作單元。 局部變量局部變量(數(shù)據(jù))(數(shù)據(jù)) 保存運(yùn)行過程前的狀態(tài)保存運(yùn)行過程前的狀態(tài)(返回地址,寄存器值)(返回地址,寄存器值
8、) 存取鏈存取鏈(可選)(可選) 對于非局部量的引用。對于非局部量的引用。 控制鏈控制鏈(可選)(可選) 指向調(diào)用者的活動記錄,釋放棧。指向調(diào)用者的活動記錄,釋放棧。 實(shí)參實(shí)參(形式單元)(形式單元) 返回值返回值(對函數(shù))(對函數(shù))(有時可使用寄存器存放返回值)(有時可使用寄存器存放返回值) 簡單的棧式分配方案簡單的棧式分配方案 程序結(jié)構(gòu)特點(diǎn)程序結(jié)構(gòu)特點(diǎn):過程定義不嵌套,過程可過程定義不嵌套,過程可遞歸調(diào)用,含可變數(shù)組遞歸調(diào)用,含可變數(shù)組; 例例: main 全局變量的說明全局變量的說明 proc R end R; proc Q end Q; 主程序執(zhí)行語句主程序執(zhí)行語句 end mainM
9、ain-Q-R Main-Q-Q TOP- R 的活動記錄的活動記錄 Q 的活動記錄的活動記錄 SP- Q 的活動記錄的活動記錄 Q 的活動記錄的活動記錄 主程序全局主程序全局 主程序全局主程序全局 數(shù)據(jù)區(qū)數(shù)據(jù)區(qū) 數(shù)據(jù)區(qū)數(shù)據(jù)區(qū)TOP- 臨時工作單元臨時工作單元 局部簡單變量局部簡單變量 局部數(shù)組的內(nèi)情向量局部數(shù)組的內(nèi)情向量 保存運(yùn)保存運(yùn) 行過程前的狀態(tài)行過程前的狀態(tài)(返回地址,寄存器值)(返回地址,寄存器值) 實(shí)參實(shí)參(形式單元)和參數(shù)個數(shù)(形式單元)和參數(shù)個數(shù) SP- 控制鏈控制鏈(老(老 SP) TOP R 的數(shù)組區(qū)的數(shù)組區(qū) SP R 的活動記錄的活動記錄 Q 的活動記錄的活動記錄 主程序
10、全局主程序全局 數(shù)據(jù)區(qū)數(shù)據(jù)區(qū) 嵌套過程語言的棧式嵌套過程語言的棧式分配方案分配方案主要特點(diǎn)主要特點(diǎn): (語言)一個過程可以引用包圍它的任(語言)一個過程可以引用包圍它的任一外層過程所定義的標(biāo)識符(如變量,一外層過程所定義的標(biāo)識符(如變量,數(shù)組或過程等)。數(shù)組或過程等)。 (實(shí)現(xiàn))一個過程可以引用它的任一外(實(shí)現(xiàn))一個過程可以引用它的任一外層過程的最新活動記錄中的某些數(shù)據(jù)。層過程的最新活動記錄中的某些數(shù)據(jù)。 關(guān)鍵技術(shù):解決對非局部量的引用(存關(guān)鍵技術(shù):解決對非局部量的引用(存?。H。?設(shè)法跟蹤每個外層過程的最新活動記錄設(shè)法跟蹤每個外層過程的最新活動記錄AR的位置。的位置。 跟蹤辦法:跟蹤辦法
11、: 1. 用靜態(tài)鏈(如用靜態(tài)鏈(如PL/0的的SL)。)。 2. 用用DISPLAY表。表。例:例:program main(i,0); 程序結(jié)構(gòu)圖程序結(jié)構(gòu)圖 proc R(c,d); R end /*R*/ proc P (a); 主主 proc Q (b); P Q call R R(x,y); end /*Q*/ call Q Q(z); call P end /*P*/ call R P(W);); R(U,V);); end /*main*/用用Display表的方案表的方案(1)主程序主程序-(2)P-(3)Q-(4)R P 的的活動記錄活動記錄主程序的主程序的活動記錄活動記錄 d
12、1d0displaysptop主程序的主程序的活動記錄活動記錄 d0spdisplaytop(1)(2)用用Display表的方案表的方案 主程序主程序-P-Q-RR 的的活動記錄活動記錄 Q 的的活動記錄活動記錄 P 的的活動記錄活動記錄主程序的主程序的活動記錄活動記錄Q 的的活動記錄活動記錄 P 的的活動記錄活動記錄主程序的主程序的活動記錄活動記錄 displayd2d1d0 d1d0 displaysptoptopsp(3)(4)DISPLAY表的維護(hù)和建立表的維護(hù)和建立 DISPLAY表表d 運(yùn)行棧運(yùn)行棧 0 主程活動記錄地址主程活動記錄地址 1 R活動記錄地址活動記錄地址 . 0 老
13、老 SP 1 返回地址返回地址 2 全局全局 DISPLAY地址地址 3 參數(shù)個數(shù)參數(shù)個數(shù) 4形式單元形式單元 . . . d DISPLAY . . . 簡單變量簡單變量 數(shù)組內(nèi)情向量數(shù)組內(nèi)情向量 臨時變量臨時變量 當(dāng)過程的層次為當(dāng)過程的層次為n,它的它的 display為為n+1個個值。值。 一個過程被調(diào)用時,一個過程被調(diào)用時,從調(diào)用過程的從調(diào)用過程的DISPLAY表中自下向表中自下向上抄錄上抄錄n個個SP值,再加值,再加上本層的上本層的SP值。值。全局全局DISPLAY地址地址 Procedure A(m,n); integer m,n; B1:begin real z; array B
14、m:n; B2:begin real d, e; L3: 2 end; B4:begin array C1:m; 1 B5:begin real e; L6: 5 4 end; end; L8:end; 分程序結(jié)構(gòu)的存儲分程序結(jié)構(gòu)的存儲分配方案分配方案 處理分程序結(jié)構(gòu)存儲分配方案的一處理分程序結(jié)構(gòu)存儲分配方案的一種簡單辦法是,把分程序看成種簡單辦法是,把分程序看成 “無參過無參過 程程”,它在哪里定義就在哪里被調(diào)用。,它在哪里定義就在哪里被調(diào)用。因此,可以把處理過程的存儲辦法應(yīng)用因此,可以把處理過程的存儲辦法應(yīng)用到處理分程序中。但這種做法是極為低到處理分程序中。但這種做法是極為低效的。效的。
15、一則,每逢進(jìn)入一則,每逢進(jìn)入 一個分程序,就照樣建一個分程序,就照樣建立連接數(shù)據(jù)和立連接數(shù)據(jù)和DISPLAY表表,這是不必要的。這是不必要的。 二則二則 ,當(dāng)從內(nèi)層分程序向外層轉(zhuǎn)移時,當(dāng)從內(nèi)層分程序向外層轉(zhuǎn)移時,可能同時要結(jié)束若干個分程序??赡芡瑫r要結(jié)束若干個分程序。 按照過程處理辦法,意味著必須一層按照過程處理辦法,意味著必須一層一層地通過一層地通過“返回返回” 來恢復(fù)所要到達(dá)的來恢復(fù)所要到達(dá)的那個分程序的數(shù)據(jù)區(qū),但不能直接到達(dá)。那個分程序的數(shù)據(jù)區(qū),但不能直接到達(dá)。例如:如果有一個從第例如:如果有一個從第5層分程序轉(zhuǎn)出到達(dá)層分程序轉(zhuǎn)出到達(dá)第第1層分程序的標(biāo)號層分程序的標(biāo)號L,雖然在第雖然在第
16、5層分程層分程序工作時知道序工作時知道L所屬的層數(shù),我們極易從所屬的層數(shù),我們極易從DISPLAY中獲得第中獲得第1層分程序的活動記層分程序的活動記錄基址(錄基址(SP),),但是怎么知道第但是怎么知道第1層分程層分程序進(jìn)入時的序進(jìn)入時的TOP呢?唯一的辦法是從呢?唯一的辦法是從 5,4,3和和2各層順序退出。但這種辦法是很各層順序退出。但這種辦法是很浪費(fèi)時間的。浪費(fèi)時間的。 為了解決上述問題,可采取兩種措施。第為了解決上述問題,可采取兩種措施。第一,對每個過程或分程序都建立有自己一,對每個過程或分程序都建立有自己的棧頂指示器的棧頂指示器TOP,代替原來僅有過程代替原來僅有過程的棧頂指示器的棧
17、頂指示器, 每個每個TOP的值保存在各自的值保存在各自活動記錄中。這樣,上述的第二個問題活動記錄中。這樣,上述的第二個問題便可解決。第二,不把分程序看作便可解決。第二,不把分程序看作“無無參過程參過程”,每個分程序享用包圍它的那,每個分程序享用包圍它的那個最近過程的個最近過程的DISPLAY。每個分程序都每個分程序都隸屬于某個確定的過程,分程序的層次隸屬于某個確定的過程,分程序的層次是相對于它所屬的那個過程進(jìn)行編號的。是相對于它所屬的那個過程進(jìn)行編號的。: 每個過程被當(dāng)作是每個過程被當(dāng)作是0層分程序。而過程體層分程序。而過程體分程序(假定是一個分程序)當(dāng)作是它分程序(假定是一個分程序)當(dāng)作是它
18、所管轄的第所管轄的第1層分程序。層分程序。這樣,每個過程的活動記錄所含的內(nèi)容有:這樣,每個過程的活動記錄所含的內(nèi)容有:1.過程的過程的TOP值,它指向過程活動記錄的值,它指向過程活動記錄的棧頂位置。棧頂位置。2.連接數(shù)據(jù),共四項(xiàng):連接數(shù)據(jù),共四項(xiàng): (1)老老SP值;值;(2)返回地址;返回地址; (3)全局全局DISPAY地址;地址;(4)調(diào)用時的棧頂單元地址,老調(diào)用時的棧頂單元地址,老TOP。 3. 參數(shù)個數(shù)和形式單元參數(shù)個數(shù)和形式單元 4. DISPAY表。表。5. 過程所轄的各分程序的局部數(shù)據(jù)單元。過程所轄的各分程序的局部數(shù)據(jù)單元。 對于每個分程序來說,它們包括:對于每個分程序來說,它
19、們包括:(1)分程序的分程序的TOP值。當(dāng)進(jìn)入分程序時它值。當(dāng)進(jìn)入分程序時它含現(xiàn)行棧頂?shù)刂?,以后,用來定義棧的含現(xiàn)行棧頂?shù)刂罚院?,用來定義棧的新高度(分程序的新高度(分程序的TOP值);值);(2)分程序的局部變量,分程序的局部變量, 數(shù)組內(nèi)情向量和數(shù)組內(nèi)情向量和臨時工作單元。臨時工作單元。 變 量 e B5 的 T O P 數(shù) 組 C 的 內(nèi) 情 向 量 變 量 e 和 d B4 的 T O PB2的 TOP 數(shù) 組 B 的 內(nèi) 情 向 量 變 量 zKB1 的 T O PDD I S P L A Y6形 式 單 元 m,n5參 數(shù) 個 數(shù):24調(diào) 用 時 的 棧 頂 地 址(老 T O
20、P)3全 局 D I S P L A Y 地 址2返 回 地 址1老 S P0過 程 的 T O P,指 向 活 動 記 錄 之 頂B的 內(nèi) 情 向 量 Z B1的 T O PD I S P L A YD I S P L A Y 形 式 單 元 m , n 2 形 式 單 元 m , n 2連 接 數(shù) 據(jù)連 接 數(shù) 據(jù) A 的 T O PA的 T O P (a) (b)(a) 到 達(dá) 標(biāo) 號 B1處 ; (b)進(jìn) 入 分 程 序 B1;B Z B1T O 數(shù) 組 B 數(shù) 組 B e dB22的 T O PB 的 內(nèi) 情 向 量B 的 內(nèi) 情 向 量 z zB1 的 T O PB1的 T O P
21、D I S P L A YD I S P L A Y 形式單元 m,n 2 形式單元 m,n 2連 接 數(shù) 據(jù)連接 數(shù) 據(jù)A 的 T O PA 的 T O P (c) (d)(c )數(shù)組 B 分配之后; (d)進(jìn)入分程序 B22; 數(shù) 組C 數(shù) 組 C 數(shù) 組B 數(shù) 組 B C的 向 量 內(nèi) 情 eB5的T O PC 的 內(nèi) 情 向 量B4的T O PB4的T O PB 的 內(nèi) 情 向 量B的 內(nèi) 情 向 量 z ZB1的T O PB1 的T O PD I S P L A YD I S P L A Y 形式單元 m,n 2 形式單元 m,n 2連接數(shù)據(jù)連 接 數(shù) 據(jù)A的T O PA的T O P
22、 (e) (f)(e)進(jìn)入分程序B4分配數(shù)組C之后; (f)進(jìn)入分程序B5 。 參數(shù)傳遞參數(shù)傳遞(1)procedure exchangel(i,j:integer);(2) var x:integer;(3) begin;(4) x:=ai; ai:=aj; aj:=x(5) end; 帶有非局部變量和形參的帶有非局部變量和形參的PASCAL過程過程非局變量非局變量ai和和aj的的值進(jìn)行交換,值進(jìn)行交換,i,j為形參(在為形參(在這里是傳值)這里是傳值) (1)program reference(input,output);(2)var a,b:integer;(3)procedure sw
23、ap(var x,y:integer);(4) var temp:integer;(5) begin (6) temp:=x;(7) x:=y;(8) y:=temp(9) end;(10)begin(11) a:=1; b:=2;(12) swap(a,b);(13) writeln(a=,a);writeln(b=,b)(14)end. 帶有過程帶有過程swap的的PASCAL程序程序 傳地址(變量參數(shù))傳地址(變量參數(shù)) 例如:過程例如:過程 swap(var x,y:integer); swap(a,b);();( a,b為為調(diào)用時的調(diào)用時的實(shí)參實(shí)參 ) 調(diào)用結(jié)果調(diào)用結(jié)果a,b的值被改
24、變。的值被改變。 傳值(值調(diào)用)傳值(值調(diào)用)特點(diǎn)是對形式參數(shù)的任何運(yùn)算不影響實(shí)參的值。特點(diǎn)是對形式參數(shù)的任何運(yùn)算不影響實(shí)參的值。 例如:過程例如:過程 swap(x,y:integer); swap(a,b););其結(jié)果:其結(jié)果: a,b調(diào)用前的值不改變。調(diào)用前的值不改變。傳值傳值的實(shí)現(xiàn)的實(shí)現(xiàn) 1.形式參數(shù)當(dāng)作過程的局部變量處理,即形式參數(shù)當(dāng)作過程的局部變量處理,即在被調(diào)過程的活動記錄中開辟了形參的在被調(diào)過程的活動記錄中開辟了形參的存儲空間,這些存儲位置即是我們所說存儲空間,這些存儲位置即是我們所說的形式單元(用以存放實(shí)參)。的形式單元(用以存放實(shí)參)。 2.調(diào)用過程計算實(shí)參的值,并將其放在
25、對調(diào)用過程計算實(shí)參的值,并將其放在對應(yīng)形式單元開辟的空間中。應(yīng)形式單元開辟的空間中。 3.被調(diào)用過程執(zhí)行時,就像使用局部變量被調(diào)用過程執(zhí)行時,就像使用局部變量一樣使用這些形式單元。一樣使用這些形式單元。procedure swap( x,y:integer); var temp:integer; begin temp:=x; x:=y; y:=temp end; 調(diào)用swap(a,b) 過程將不會影響a和b的值。 其結(jié)果等價于執(zhí)行下列運(yùn)算: x :=a; y :=b; temp :=x; x :=y; y :=temp傳地址傳地址的實(shí)現(xiàn)的實(shí)現(xiàn)(call- by- reference )(cal
26、l-by-address)(call-by-location) 把實(shí)在參數(shù)的地址傳遞給相應(yīng)的形參,即把實(shí)在參數(shù)的地址傳遞給相應(yīng)的形參,即 調(diào)用過程把一個指向?qū)崊⒌拇鎯Φ刂返闹羔槀髡{(diào)用過程把一個指向?qū)崊⒌拇鎯Φ刂返闹羔槀鬟f給被調(diào)用過程相應(yīng)的形參:遞給被調(diào)用過程相應(yīng)的形參:1實(shí)在參數(shù)是一個名字,或具有左值的表達(dá)式實(shí)在參數(shù)是一個名字,或具有左值的表達(dá)式-傳遞左值傳遞左值2實(shí)在參數(shù)是無左值的表達(dá)式實(shí)在參數(shù)是無左值的表達(dá)式-計算值,放入一計算值,放入一存儲單元,傳此存儲單元地址存儲單元,傳此存儲單元地址3目標(biāo)代碼中,被調(diào)用過程對形參的引用變成對目標(biāo)代碼中,被調(diào)用過程對形參的引用變成對傳遞給被調(diào)用過程的指
27、針的間接引用傳遞給被調(diào)用過程的指針的間接引用procedure swap( x,y:integer); var temp:integer; begin temp:=x; x:=y; y:=temp end; 調(diào)用swap(i,ai) 其結(jié)果等價于執(zhí)行下列運(yùn)算: 1把 I和ai的地址分別放到x和y相應(yīng)的單元a1,a2 2( temp :=x;)temp的內(nèi)容置為a1所指單元中存的內(nèi)容 3 (x :=y;) a1所指單元的內(nèi)容置為a2所指單元值4( y :=temp) a2所指單元的內(nèi)容置為temp的值 (1)swap(x,y)(2)int *x,*y;(3) int temp;(4) temp=
28、*x; *x=*y; *y=temp;(5)(6)main( )(7) int a=1,b=2;(8) swap(&a,&b);(9) printf(“a is now %d,b is now %dn”,a,b);(10) 在一個值調(diào)用過程中使用指針的在一個值調(diào)用過程中使用指針的C程序程序在在C程序中無傳地址所以用指針實(shí)現(xiàn)。程序中無傳地址所以用指針實(shí)現(xiàn)。過程調(diào)用的四元式序列過程調(diào)用的四元式序列 S call id() ,E Epar T1par T2par Tncall id,n 過程作為參數(shù)傳遞三種環(huán)境:詞法環(huán)境 傳遞環(huán)境 活動環(huán)境 program param(input,output);
29、procedure b(function h(n:integer):integer);(*) var m:integer; begin m:=3; writeln(h(2) endb; procedure c;(*) var m:integer; function f(n:integer):integr;(&) begin f:=m+n endf; begin m:=0; b(f) end c begin c end. (1)program param(input,output); (2)procedure b(function h(n:integer):integer); (3) begin
30、 writeln(h(2) endb; (4)procedure c; (5) var m:integer; (6) function f(n:integer):integr; (7) begin f:=m+n endf; (8)begin m := 0; b(f) end c; (9)begin (10) c (11)end 圖10-27 嵌套過程作為參數(shù)傳遞 param c 存取鏈 m b 存取鏈圖 10-28 連同存取鏈一起 傳遞過程實(shí)參各種數(shù)據(jù)對象的存儲分配數(shù)據(jù)對象 name 名字,名稱 type 類型 location 內(nèi)存地址 value 值 component 成分 例:按行例:按行 A是是 10 20 的二維數(shù)組的二維數(shù)組A1, 1A1, 2. . 第一行第一行. .A1, 20A2, 1. . 第二行第二行. . . . .A10, 20 第十行第十行數(shù)組元素的地址計算數(shù)組元素的地址計算設(shè)設(shè) A1,1的地址為的地址為 a,每個元素占一個字,每
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- Module 10 Unit 2 教學(xué)設(shè)計 2023-2024學(xué)年外研版英語八年級下冊
- 2024年初級經(jīng)濟(jì)師題庫附答案
- 二零二五年度個人停車位租賃及物業(yè)管理服務(wù)合同
- 二零二五年度分手后個人肖像權(quán)許可協(xié)議
- 二零二五年度終止勞動合同協(xié)議書:GGG公司員工HHH合同終止及競業(yè)限制協(xié)議
- 二零二五年度工程抵債房產(chǎn)租賃與物業(yè)管理協(xié)議
- 2025年度職業(yè)教育機(jī)構(gòu)與企業(yè)實(shí)習(xí)合作合同
- 二零二五年度知識產(chǎn)權(quán)運(yùn)營公司掛靠合作協(xié)議
- 二零二五年度診所財務(wù)人員聘用及預(yù)算合同
- 二零二五年度家庭贍養(yǎng)老人醫(yī)療費(fèi)用分?jǐn)倕f(xié)議
- 2024年2型糖尿病中醫(yī)防治指南解讀課件
- 2024-2030年中國螺旋藻行業(yè)市場發(fā)展分析及發(fā)展趨勢與投資研究報告
- MOOC 中外鐵路文化之旅-華東交通大學(xué) 中國大學(xué)慕課答案
- CJJ 82-2012 園林綠化工程施工及驗(yàn)收規(guī)范
- 數(shù)據(jù)庫原理及應(yīng)用(第3版)
- 預(yù)防流感健康知識講座總結(jié)
- 國際標(biāo)準(zhǔn)《風(fēng)險管理指南》(ISO31000)的中文版
- 2023年4月自考00808商法試題及答案含解析
- 幼兒園中班語言《猜燈謎》
- 中醫(yī)外科瘡瘍病
- (高清版)DZT 0004-2015 重力調(diào)查技術(shù)規(guī)范(150 000)
評論
0/150
提交評論