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

正文內(nèi)容

函數(shù)是c程序的基本模塊可將一些功能相對獨(dú)立的或經(jīng)常(文件)

2025-06-05 07:55 上一頁面

下一頁面
 

【正文】 :nendl。i39。 正是由于形參不能被程序的其他地方引用 , 所以通常只要聲明形參個數(shù)和類型 , 形參名可省略 。 如果某個文件中說明了具有文件作用域的標(biāo)識符 , 該文件又被另一個文件包含 , 則該標(biāo)識符的作用域延伸到新的文件中 。 前兩者稱為自動類型 , 后兩者分別為靜態(tài)和外部類型 。 其空間分配于塊始 , 空間釋放于塊終 , 且由系統(tǒng)自動進(jìn)行 。 根據(jù)被修飾變量的位置不同 , 分為局部 ( 內(nèi)部 ) 靜態(tài)變量和全局 ( 外部 ) 靜態(tài)變量 。 局部靜態(tài)變量 【 例 4. 10】 自動變量與局部靜態(tài)變量的區(qū)別 。 } at(){ int t=100。 for(i=0。 coutendl。\t39。 return t。 } void main(){ int i。\t39。i++) coutst()39。 有關(guān)內(nèi)容在下節(jié)靜態(tài)存儲類型中介紹 。 在由多個源程序文件組成的程序中 , 如果一個文件要使用另一個文件中定義的全局變量或函數(shù) , 這些源程序文件之間通過外部類型的變量和函數(shù)進(jìn)行溝通 。 函數(shù)聲明缺省為外部的,因此修飾詞 extern通常省略。 int n。 } /* ,由 fun2()組成 */ extern int n。靜態(tài)存儲類型的作用域與外部存儲類型相反,一旦定義為靜態(tài)存儲類型,就限制該變量或函數(shù)只能在定義它的文件中使用。 生命期與可見性 1. 生命期 2. 可見性 1 生命期 ( 1)靜態(tài)生命期 ( 2)局部生命期 ( 3)動態(tài)生命期 生命期( Life time)也叫生存期。 具有靜態(tài)生命期的標(biāo)識符在未被用戶初始化的情況下 , 系統(tǒng)會自動將其初始化為全 0。 具有靜態(tài)生命期的標(biāo)識符存放在棧區(qū) 。具有動態(tài)生命期的變量存放在堆區(qū)??梢娦栽诶斫馔麡?biāo)識符的 作用域嵌套 時十分直觀。 int m=1。 } m++。 在函數(shù)調(diào)用中,有這樣兩種情況,一種是在函數(shù) A的定義中有調(diào)用函數(shù) A的語句,即自己調(diào)用自己;另一種是函數(shù)A的定義中出現(xiàn)調(diào)用函數(shù) B的語句,而函數(shù) B的定義中也出現(xiàn)調(diào)用函數(shù) A的語句,即相互調(diào)用。 遞歸定義的階乘算法用函數(shù)描述為: fac(int n){ if (n==0||n==1) return 1。 coutn39。 couty39。 } n=4 cout4。 n=2 cout1。 n=1 n=3 cout3。 cout6。 24 遞歸函數(shù)的執(zhí)行分為 “ 遞推 ” 和 “ 回歸 ” 兩個過程,這兩個過程由遞歸終止條件控制,即 逐層遞推 ,直至 遞歸終止條件 ,然后 逐層回歸 。 有 A、 B、 C三根柱子 , A柱上有 n個大小不等的盤子 , 大盤在下 , 小盤在上 。 3 A柱有 n個盤子的情況:將此問題看成上面 n1個盤子和最下面第 n個盤子的情況 。 函數(shù)的遞歸調(diào)用 函數(shù)的遞歸調(diào)用 算法可以描述為: 1 n1個盤子 A柱 ?B柱,借助于 C柱; 2 第 n個盤子 A柱 ?C柱; 3 n1個盤子 B柱 ?C柱,借助于 A柱; 其中步驟 1和步驟 3繼續(xù)遞歸下去,直至搬動一個盤子為止。 else{ hanoi(n1,source,target,temp)。 cout輸入盤子數(shù): endl。,39。)。 if(n10) return。 cinn。 } 函數(shù)的遞歸調(diào)用 n=247 cout7。 n=24 cout4。 coutendl。因此,遞歸的終止條件非常重要,否則將會無休止地遞歸下去,陷入死循環(huán)狀態(tài)。 else if(n==1) return 1。i++){ //將 19改為 69,可以看出計(jì)算到后面越來越緩慢。 } 函數(shù)的遞歸調(diào)用 圖 遞歸求解斐波那契數(shù)列調(diào)用樹 同其他算法相比,用遞歸算法編制的程序 非常簡潔易讀 ,但缺點(diǎn)是增加了內(nèi)存的開銷,在遞推的過程中會 占用大量??臻g ,且連續(xù)的調(diào)用返回操作 占用較多 CPU時間 。匹配過程按如下步驟進(jìn)行: ( 1)如果有嚴(yán)格匹配的函數(shù),就調(diào)用該函數(shù); ( 2)參數(shù)內(nèi)部轉(zhuǎn)換后如果匹配,調(diào)用該函數(shù); ( 3)通過用戶定義的轉(zhuǎn)換尋求匹配。 include sum(int a,int b){ return a+b。 cout+=“ sum(,)endl。這樣的函數(shù)在調(diào)用時,對于缺省參數(shù),可以給出實(shí)參值,也可以不給出參數(shù)值。 //文件名: include void delay(int loops=5){ //延時函數(shù) ,默認(rèn)延時 5個時間單位 for (。 cout“延時 3個時間單位 endl。 參數(shù) a缺省時,可由隨機(jī)數(shù)發(fā)生函數(shù)當(dāng)場產(chǎn)生, 編譯時定的是調(diào)什么函數(shù) 。例如: int fun2 (int, int =10, int =20)。為了提高效率,一個解決辦法就是不使用函數(shù),直接將函數(shù)的代碼嵌入到程序中。amp。 else cout″不是數(shù)字字符 ″endl。這些文件均以 .h的形式命名,存放在系統(tǒng)目錄的 include子目錄 下。如: include 其中的 ,這種以“ .h”命名的文件稱為頭文件, 系統(tǒng)定義的頭文件 中定義了一些常用的公用標(biāo)識符和函數(shù),用戶只要將頭文件包含進(jìn)自己的文件,就可使頭文件中定義的標(biāo)識符在用戶文件中變得可見,也就可以直接使用頭文件中定義的標(biāo)識符和函數(shù)。 4. 9. 2 多文件結(jié)構(gòu) 在開發(fā)較大程序時,通常將其分解為多個源程序文件,每個較小的程序用一個源程序文件建立。編譯時每個源程序文件單獨(dú)編譯,如果源程序文件中有編譯預(yù)處理指令,則首先經(jīng)過編譯預(yù)處理生成臨時文件存放在內(nèi)存,之后對臨時文件進(jìn)行編譯生成目標(biāo)文件 .obj,編譯后臨時文件撤銷。替換過程稱為宏替換或宏展開。注意,宏定義時形參通常要用括號括起來,否則容易導(dǎo)致邏輯錯誤。 格式為: include 文件名 或 include ″文件名 ″ 第一種 方式稱為 標(biāo)準(zhǔn)方式 , 預(yù)處理器將在 include子目錄下搜索由文件名所指明的文件 。 一個被包含的頭文件中還可以有 include指令,即 include指令可以嵌套 ,但是,如果同一個頭文件在同一個源程序文件中被 重復(fù)包含 ,就會出現(xiàn) 標(biāo)識符重復(fù)定義的錯誤 。這種情況就要使用條件編譯指令。形式如下: ifdef DEBUG cout″a=″a′\t′″x=″xendl。 undef指令用來取消 define指令所定義的符號,這樣可以根據(jù)需要打開和關(guān)閉符號。 條件編譯指令包括: if、 else、 ifdef、 ifndef、endif、 undef等??梢酝ㄟ^在該指令前面安排宏定義來控制編譯不同的程序段。避免重復(fù)包含可以用 條件編譯指令 。 而 第二種方式 編譯器將首先在當(dāng)前文件所在目錄下搜索 , 如果找不到再按標(biāo)準(zhǔn)方式搜索 。 帶參宏定義形式上象定義函數(shù),但它與函數(shù)的本質(zhì)不同,宏定義仍然只是產(chǎn)生字符串替代,不存在分配內(nèi)存和參數(shù)傳遞。 宏替換只是字符串和標(biāo)識符之間的簡單替換,預(yù)處理本身不做任何數(shù)據(jù)類型和合法性檢查,也不分配內(nèi)存單元 。 圖 。 多文件結(jié)構(gòu)通過工程進(jìn)行管理,在工程中建立若干用戶定義的頭文件.h和源程序文件 .cpp。對于具有外部存儲類型的標(biāo)識符,可以在其他任何一個源程序文件中經(jīng)聲明后引用,因此用戶完全可以將一些具有外部存儲類型的標(biāo)識符的聲明放在一個頭文件中。 4. 9 頭文件與多文件結(jié)構(gòu) 4. 9. 1 頭文件 在將一個程序分解成若干個文件時,需要考慮標(biāo)識符在其他文件中的可見性。 C++的系統(tǒng)庫函數(shù) C++提供了一個很大的常用函數(shù)庫,該函數(shù)庫本身并不是C++語言的組成部分,所有庫中的函數(shù)用戶都可以自己定義,但直接使用庫函數(shù)能給編程帶來很大方便。 } void main(){ char ch。 為了協(xié)調(diào)好效率和可讀性之間的矛盾 , C++提供了另一種方法,即定義 內(nèi)聯(lián)函數(shù) ,方法是在定義函數(shù)時用修飾詞 inline。參數(shù)名也可省略 void fun1(){…} int fun2(int a, int b, int c) {…}// 定義中不再給出缺省值 缺省變元 內(nèi)聯(lián)函數(shù) 當(dāng)程序執(zhí)行函數(shù)調(diào)用時,系統(tǒng)要建立??臻g,保護(hù)現(xiàn)場,傳遞參數(shù)以及控制程序執(zhí)行的轉(zhuǎn)移等等,這些工作需要系統(tǒng)時間和空間的開銷。這是因?yàn)樵诤瘮?shù)調(diào)用時, 參數(shù)自左向右逐個匹配 ,當(dāng)實(shí)參和形參個數(shù)不一致時只有這樣才不會產(chǎn)生二義性。 //等同于 delay(5) cout“延時 5個時間單位 endl。 loops)。 缺省參數(shù)的函數(shù)調(diào)用:缺省參數(shù)的 值 或 表達(dá)方式 在編譯時確定,即其值通過 表達(dá)式 給出,但表達(dá)式必須有意義;缺省值還可以是全局常量、全局變量,甚至可以 通過函數(shù)調(diào)用給出 ;但不能通過局部變量給出,因?yàn)榫植孔兞康闹翟趫?zhí)行時才有意義。} 一般情況下,函數(shù)調(diào)用時的實(shí)參個數(shù)應(yīng)與形參相同,但為了更方便地使用函數(shù), C++也允許定義具有缺省參數(shù)的函數(shù),這種函數(shù)調(diào)用時實(shí)參個數(shù)可以與形參不相同。 } float sum(float a,float b,float c){ return a+b+c。函數(shù)重載的好處在于,可以用相同的函數(shù)名來定義一組功能相同或類似的函數(shù),程序的可讀性增強(qiáng)。 函數(shù)的遞歸調(diào)用 函數(shù)的一些高級議題 4. 7. 1 函數(shù)重載 4. 7. 2 缺省變元 4. 7. 3 內(nèi)聯(lián)函數(shù) 函數(shù)重載 在 C++中,如果需要定義幾個功能相似,而參數(shù)類型不同的函數(shù),那么這樣的幾個函數(shù)可以使用相同的函數(shù)名,這就是 函數(shù)重載 。 coutsetw(6)fib(i)。 } void main(){ for(int i=0。本例的遞歸調(diào)用過程參見圖 。如果先遞歸后輸出余數(shù),則是在回歸的過程中輸出,實(shí)現(xiàn)的就是正序輸出。 backward(247) return。 n=2 cout2。 backward(n)。 } void main(){ int n。 分析: 在遞歸過程的遞推步驟中用求余運(yùn)算將整數(shù)的各個位分離,并打印出來。,39。 hanoi(n,39。 //將最后一個盤子搬到目標(biāo)柱 hanoi(n1,temp,source,target)。 程序如下: include void move(char source,char target){ coutsourcetargetendl。 問題轉(zhuǎn)化成搬動 n1個盤子的問題 , 同樣 , 將 n1個盤子看成上面 n2個盤子和下面第 n1個盤子的情
點(diǎn)擊復(fù)制文檔內(nèi)容
高考資料相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1