freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

c高校教材第五章函數(shù)-文庫(kù)吧

2025-04-21 21:28 本頁(yè)面


【正文】 執(zhí)行點(diǎn) ,也即調(diào)用前必須保留返回地址 。 函數(shù)調(diào)用過(guò)程中的運(yùn)行棧 P:147 運(yùn)行棧會(huì)隨著程序的運(yùn)行而動(dòng)態(tài)變化 。 參數(shù)傳遞是函數(shù)調(diào)用過(guò)程中十分重要的工作 。 ? 所謂參數(shù)傳遞是指實(shí)在參數(shù)與形式參數(shù)之間的數(shù)據(jù)傳遞 。 ( 1) 傳遞順序: 按參數(shù)表中參數(shù)的排列順序自左向右逐一傳遞 。 ( 2) 傳遞方式:有三種傳遞方式 (形實(shí)結(jié)合方式 ) I. 傳值 II. 傳遞指針 III. 傳遞引用 I. 傳值( P: 137) ? 傳值: 在函數(shù)被調(diào)用時(shí) , 將實(shí)參的值存入對(duì)應(yīng)形參的參數(shù)區(qū)中 。 實(shí)參可以是變量 、 常量 、 表達(dá)式 。 ? 特點(diǎn):被調(diào)函數(shù)對(duì)參數(shù)的修改不會(huì)影響主調(diào)函數(shù)用做實(shí)參的數(shù)據(jù)對(duì)象 。 這樣的參數(shù)傳遞方式 , 只能實(shí)現(xiàn)數(shù)據(jù)的單向傳遞 , 即:無(wú)法由實(shí)參帶回函數(shù)對(duì)參數(shù)的任何修改 。 例如: // includeiostream using namespace std。 void swap(int, int)。 int main() { int x=5,y=3,z=7。 swap(x,y)。 coutx=x,y=y,z=zendl。 swap(y,z)。 coutx=x,y=y,z=zendl。 return 1。 } void swap(int a,int b) { int temp=a。 a=b。 b=temp。 } 輸出結(jié)果: x=5,y=3,z=7 x=5,y=3,z=7 II. 傳遞指針:即指針作為函數(shù)的參數(shù)(例如: //) include iostream using namespace std。 void swap(int *,int *)。 int main() { int a=3,b=8。 couta=a,b=bendl。 swap(amp。a,amp。b)。 //必須以變量 a和 b的地址作為實(shí)參 coutafter swapping...\n。 couta=a,b=bendl。 return 1。 } void swap(int *x,int *y) { int temp=*x。 //必須用 “ *指針變量名 ” 的形式操作目標(biāo)數(shù)據(jù) *x=*y。 *y=temp。 } 運(yùn)行結(jié)果: a=3,b=8 after swapping … a=8,b=3 從這個(gè)例子中我們可以看出: 在程序設(shè)計(jì)中通過(guò)定義 函數(shù)的參數(shù)是指針類(lèi)型數(shù)據(jù)可以使函數(shù)返回不止一個(gè)的值 。 上例中: 函數(shù)調(diào)用語(yǔ)句: swap(amp。a,amp。b)。 必須以變量 a和 b的地址作為實(shí)參 函數(shù)定義的頭部為: void swap(int *x,int *y) III. 傳遞引用 (即: 引用作為函數(shù)的參數(shù) ) 例如: void swap(int amp。x,int amp。y) {//函數(shù)的形參 x, y都是引用 int temp=x。 x=y。 y=temp。 } 此時(shí) , 函數(shù)的原型 可寫(xiě)為: void swap(intamp。, intamp。)。 ?一個(gè)函數(shù)的參數(shù)也可定義成引用的形式 。 ?引用形參: 在函數(shù)定義的參數(shù)表中 , 參數(shù)名前加上 amp。( 引用運(yùn)算符 ) 的參數(shù)即為引用形參 。 引用作為函數(shù)參數(shù)的函數(shù)調(diào)用 ? 在程序中調(diào)用函數(shù)時(shí) , 相應(yīng)主調(diào)函數(shù)的調(diào)用點(diǎn)處 ,直接以變量作為實(shí)參進(jìn)行調(diào)用即可 。 如:對(duì)應(yīng)上面定義的 swap函數(shù) , 相應(yīng)的主調(diào)函數(shù)可寫(xiě)為: int main() { int a=3,b=8。 couta=a,b=bendl。 swap(a,b)。//直接以變量 a和 b作為實(shí)參調(diào)用 swap函數(shù) coutafter swapping...\n。 couta=a,b=bendl。 return 1。 }// 運(yùn)行結(jié)果: a=3,b=8 after swapping … a=8,b=3 幾點(diǎn)說(shuō)明 ( 1) 用引用作為函數(shù)的參數(shù)可使函數(shù)返回多個(gè)值 。 ( 2) 傳遞引用給函數(shù)與傳遞指針的效果是一樣的 。傳遞引用時(shí) , 被調(diào)函數(shù)的形參就作為原來(lái)主調(diào)函數(shù)中的實(shí)參變量或?qū)ο蟮囊粋€(gè)別名來(lái)使用 , 所以 ,在被調(diào)函數(shù)中對(duì)形參變量的操作就是對(duì)其相應(yīng)的主調(diào)函數(shù)中的目標(biāo)對(duì)象的操作 。 使用指針作為函數(shù)參數(shù) 的不同之處: ? 在被調(diào)函數(shù)中需要重復(fù)使用 “ *指針變量名 ” 的形式進(jìn)行運(yùn)算 , 這很容易產(chǎn)生錯(cuò)誤且程序的閱讀性較差; ? 在主調(diào)函數(shù)的調(diào)用點(diǎn)處 , 必須用變量的地址作為實(shí)參 。 ( 3) 使用引用傳遞函數(shù)的參數(shù) , 在內(nèi)存中并沒(méi)有產(chǎn)生實(shí)參的副本 , 是直接對(duì)實(shí)參操作 ; 使用一般變量傳遞函數(shù)的參數(shù) , 需要給形參分配存儲(chǔ)單元 , 形參與實(shí)參就占用不同的存儲(chǔ)單元 , 所以 , 形參變量的值是實(shí)參變量的副本 。 因此 , 當(dāng)參數(shù)傳遞的數(shù)據(jù)量較大時(shí) , 用引用比用一般變量傳遞參數(shù)的效率和所占空間都好 。 ? 用引用作為函數(shù)的參數(shù)的優(yōu)點(diǎn): 引用具有指針的威力 , 但是 , 調(diào)用引用傳遞的函數(shù)時(shí) ,可讀性卻比指針傳遞好;引用具有傳值方式函數(shù)調(diào)用語(yǔ)法的簡(jiǎn)單性與可讀性 , 但是 , 威力卻比傳值方式強(qiáng) 。 ? 程序需要從函數(shù)返回兩個(gè)或兩個(gè)以上的值 ,解決的辦法: 1) 用引用作為函數(shù)的參數(shù) 2) 用指針作為函數(shù)的參數(shù) ? 函數(shù)參數(shù)傳遞指針和引用是一把雙刃劍 , 它的負(fù)面作用是破壞非本地?cái)?shù)據(jù) , 破壞模塊性 。為避免這一副作用 , 在程序設(shè)計(jì)中可根據(jù)需要在指針和引用參數(shù)前加 const修飾符 , 以此限制函數(shù)體對(duì)參數(shù)的寫(xiě)操作 。 例如 : (P:141)例 52 ( 自學(xué)不講 ) 5.函數(shù)的嵌套調(diào)用 ? 函數(shù)在定義層次上必須是相同的 ,即:不允許出現(xiàn)函數(shù)的嵌套定義; 但函數(shù)的調(diào)用層次卻可以不同, 即:函數(shù)之間可以相互調(diào)用。 1) 概念 ? 函數(shù)的嵌套調(diào)用 :是指一個(gè)函數(shù)的函數(shù)體中包含一個(gè)或多個(gè)函數(shù)調(diào)用語(yǔ)句 。 ? 嵌套可以是單重的也可以是多重的 。 如果 被調(diào)函數(shù)的函數(shù)體 不再出現(xiàn)對(duì)另一函數(shù)的調(diào)用 , 就是 單重嵌套 。 相反 , 如果 被調(diào)函數(shù)的函數(shù)體 也包含對(duì)另一函數(shù)的調(diào)用 , 就構(gòu)成 多重嵌套 。 5.函數(shù)的嵌套調(diào)用 例如:再次考察 ( p:146 例 54) 程序 : main(), funcA(),funcB( ) 。 其調(diào)用關(guān)系是: main函數(shù)調(diào)用 funcA函數(shù) , 而 funcA函數(shù)調(diào)用 funcB函數(shù) 。 這是一個(gè)函數(shù)嵌套調(diào)用的例子 。 注意: 函數(shù)互相嵌套調(diào)用的層數(shù)是有限的 。 在嵌套調(diào)用中 , 如果函數(shù) A要調(diào)用函數(shù) B, 函數(shù) B的定義或函數(shù) B的原型必須出現(xiàn)在函數(shù) A的定義語(yǔ)句之前 。 1. 遞歸函數(shù)的概念 我們把函數(shù)的執(zhí)行部分中出現(xiàn)對(duì)另一函數(shù)的調(diào)用 ,這種現(xiàn)象稱(chēng)為 函數(shù)的嵌套調(diào)用 。 如果所出現(xiàn)的函數(shù)調(diào)用是對(duì)自身的調(diào)用 , 這種特殊的嵌套調(diào)用形式就是 函數(shù)的遞歸調(diào)用 。 ? 遞歸函數(shù) 即自調(diào)用函數(shù) , 在函數(shù)體中直接或間接地 自己調(diào)用自己 。 ? 遞歸調(diào)用是嵌套調(diào)用的特例 。 2.遞歸調(diào)用的基本形式 函數(shù)可以直接地或間接地調(diào)用自身 。 即:函數(shù)遞歸調(diào)用的基本形式可 分為: (1)直接遞歸調(diào)用 :即函數(shù)的函數(shù)體中直接包含函數(shù)自身的調(diào)用語(yǔ)句 。 (2)間接遞歸調(diào)用 :是指函數(shù)的函數(shù)體中 通過(guò)調(diào)用其他函數(shù) , 間接調(diào)用 該函數(shù)自身 。 間接遞歸調(diào)用例: int fn2(int )。 int fn1(int a) { int b。 b=fn2(a+1)。 //…… } int fn2(int s) { int c。 c=fn1(s1)。 //…… }。 我們注意到: fn1()函數(shù)體內(nèi)并沒(méi)有出現(xiàn)自身的調(diào)用語(yǔ)句 ,而是出現(xiàn)在被調(diào)函數(shù) fn2()的函數(shù)體中 。 3.函數(shù)遞歸調(diào)用的條件 ( 三個(gè)基本條件 ) 1) 可以把一個(gè)問(wèn)題轉(zhuǎn)化為一個(gè)新的問(wèn)題 , 而 新問(wèn)題的解決方法仍與原問(wèn)題的解決方法相同;只是所處理的對(duì)象有所不同 , 但 所處理的對(duì)象其屬性的變化必須是有規(guī)律的 。 2) 可以通過(guò)轉(zhuǎn)化過(guò)程使問(wèn)題得到解決 。 3) 遞歸函數(shù)中 必須 要有一個(gè)確定的結(jié)束遞歸的條件 , 并且 應(yīng)該遵循先測(cè)試后遞歸調(diào)用的原則 。 注意 :如果函數(shù)中沒(méi)有確定的結(jié)束遞歸的條件 ,將會(huì)造成無(wú)限遞歸 。 如果不遵循先測(cè)試后遞歸調(diào)用的原則 , 那么遞歸結(jié)束條件形同虛設(shè) 。 例如:求 n! 分析:計(jì)算 n!的公式如下: n!= 1 (n=0) n*(n1)! (n0) 從以上表達(dá)式可以看到: (1)當(dāng) n0時(shí) , n!=n*(n1)!, 求 n! 的問(wèn)題就轉(zhuǎn)化成了求 n*(n1)! 的問(wèn)題 , 而求(n1)! 的問(wèn)題與求 n! 的解法相同 , 只是求階乘的對(duì)象的值減去 1。 (2)當(dāng) n的值遞減至 0時(shí) , n!=1從而使遞歸得以結(jié)束 。 按照以上分析 , 求 n!可以用遞歸的方法解決 。 // 用遞歸調(diào)用的方法計(jì)算 n! include iostream using namespace std。 long fact(int)。 int main() { long result。
點(diǎn)擊復(fù)制文檔內(nèi)容
范文總結(jié)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1