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

正文內(nèi)容

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

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

下一頁面
  

【正文】 ndl。 } 【 例 4. 8】 設(shè)計(jì)函數(shù)完成兩數(shù)交換 , 用主函數(shù)進(jìn)行測試 , 看結(jié)果如何 。 swap(a,b)。 int t。這些同名變量各自在自己的作用域中可見,在其它地方不可見 。i39。\t39。j endl。 存儲(chǔ)類型決定了變量的 生命期 , 變量生命期指從獲得空間到空間釋放之間的時(shí)期 。 變量的存儲(chǔ)類型 register:為提高程序運(yùn)行效率 , 可以將某些變量保存在寄存器中 , 即說明為寄存器變量 , 但不提倡使用 。 //局部靜態(tài)變量 t++。i++) coutat()39。 } 變量的存儲(chǔ)類型 i= 0 t= 100 1 2 345101 變量的存儲(chǔ)類型 i= 0 t=100 1 2101 345102103104105 include st(){ static int t=100。i5。 coutendl。但其他文件如果要使用這個(gè)文件中定義的全局變量和函數(shù),必須在使用前用 “ extern”作外部聲明,外部聲明通常放在文件的開頭。 fun2()。 一個(gè)全局變量和一個(gè)靜態(tài)全局變量在使用上是不同的,其他文件通過外部變量聲明可以使用一個(gè)全局變量,但卻無法使用靜態(tài)全局變量, 靜態(tài)全局變量只能被定義它的文件所獨(dú)享 。 所有具有文件作用域的標(biāo)識(shí)符都具有靜態(tài)生命期 。 2 可見性 可見性 從另一個(gè)角度說明標(biāo)識(shí)符的有效性,可見性與作用域具有一定的一致性。 { float m=。本節(jié)只介紹直接遞歸。 if(n==0||n==1) y=1。 fac(4)= cout2。 cout24。遞歸調(diào)用同普通的函數(shù)調(diào)用一樣,每當(dāng)調(diào)用發(fā)生時(shí),在棧中分配單元保存返回地址以及參數(shù)和局部變量;而與普通的函數(shù)調(diào)用不同的是,由于遞推的過程是一個(gè)逐層調(diào)用的過程,因此存在一個(gè)逐層連續(xù)的參數(shù)入棧過程,直至遇到遞歸終止條件時(shí),才開始回歸,這時(shí)才逐層釋放棧空間,返回到上一層,直至最后返回到主調(diào)函數(shù)。 問題轉(zhuǎn)化成搬動(dòng) n1個(gè)盤子的問題 , 同樣 , 將 n1個(gè)盤子看成上面 n2個(gè)盤子和下面第 n1個(gè)盤子的情況 , 進(jìn)一步轉(zhuǎn)化為搬動(dòng) n2個(gè)盤子的問題 , …… , 類推下去 , 一直到最后成為搬動(dòng)一個(gè)盤子的問題 。 //將最后一個(gè)盤子搬到目標(biāo)柱 hanoi(n1,temp,source,target)。,39。 } void main(){ int n。 n=2 cout2。如果先遞歸后輸出余數(shù),則是在回歸的過程中輸出,實(shí)現(xiàn)的就是正序輸出。 } void main(){ for(int i=0。 函數(shù)的遞歸調(diào)用 函數(shù)的一些高級(jí)議題 4. 7. 1 函數(shù)重載 4. 7. 2 缺省變元 4. 7. 3 內(nèi)聯(lián)函數(shù) 函數(shù)重載 在 C++中,如果需要定義幾個(gè)功能相似,而參數(shù)類型不同的函數(shù),那么這樣的幾個(gè)函數(shù)可以使用相同的函數(shù)名,這就是 函數(shù)重載 。 } float sum(float a,float b,float c){ return a+b+c。 缺省參數(shù)的函數(shù)調(diào)用:缺省參數(shù)的 值 或 表達(dá)方式 在編譯時(shí)確定,即其值通過 表達(dá)式 給出,但表達(dá)式必須有意義;缺省值還可以是全局常量、全局變量,甚至可以 通過函數(shù)調(diào)用給出 ;但不能通過局部變量給出,因?yàn)榫植孔兞康闹翟趫?zhí)行時(shí)才有意義。 //等同于 delay(5) cout“延時(shí) 5個(gè)時(shí)間單位 endl。參數(shù)名也可省略 void fun1(){…} int fun2(int a, int b, int c) {…}// 定義中不再給出缺省值 缺省變元 內(nèi)聯(lián)函數(shù) 當(dāng)程序執(zhí)行函數(shù)調(diào)用時(shí),系統(tǒng)要建立??臻g,保護(hù)現(xiàn)場,傳遞參數(shù)以及控制程序執(zhí)行的轉(zhuǎn)移等等,這些工作需要系統(tǒng)時(shí)間和空間的開銷。 } void main(){ char ch。 4. 9 頭文件與多文件結(jié)構(gòu) 4. 9. 1 頭文件 在將一個(gè)程序分解成若干個(gè)文件時(shí),需要考慮標(biāo)識(shí)符在其他文件中的可見性。 多文件結(jié)構(gòu)通過工程進(jìn)行管理,在工程中建立若干用戶定義的頭文件.h和源程序文件 .cpp。 宏替換只是字符串和標(biāo)識(shí)符之間的簡單替換,預(yù)處理本身不做任何數(shù)據(jù)類型和合法性檢查,也不分配內(nèi)存單元 。 而 第二種方式 編譯器將首先在當(dāng)前文件所在目錄下搜索 , 如果找不到再按標(biāo)準(zhǔn)方式搜索 。可以通過在該指令前面安排宏定義來控制編譯不同的程序段。 undef指令用來取消 define指令所定義的符號(hào),這樣可以根據(jù)需要打開和關(guān)閉符號(hào)。這種情況就要使用條件編譯指令。 格式為: include 文件名 或 include ″文件名 ″ 第一種 方式稱為 標(biāo)準(zhǔn)方式 , 預(yù)處理器將在 include子目錄下搜索由文件名所指明的文件 。替換過程稱為宏替換或宏展開。 4. 9. 2 多文件結(jié)構(gòu) 在開發(fā)較大程序時(shí),通常將其分解為多個(gè)源程序文件,每個(gè)較小的程序用一個(gè)源程序文件建立。這些文件均以 .h的形式命名,存放在系統(tǒng)目錄的 include子目錄 下。amp。例如: int fun2 (int, int =10, int =20)。 cout“延時(shí) 3個(gè)時(shí)間單位 endl。這樣的函數(shù)在調(diào)用時(shí),對于缺省參數(shù),可以給出實(shí)參值,也可以不給出參數(shù)值。 include sum(int a,int b){ return a+b。 } 函數(shù)的遞歸調(diào)用 圖 遞歸求解斐波那契數(shù)列調(diào)用樹 同其他算法相比,用遞歸算法編制的程序 非常簡潔易讀 ,但缺點(diǎn)是增加了內(nèi)存的開銷,在遞推的過程中會(huì) 占用大量棧空間 ,且連續(xù)的調(diào)用返回操作 占用較多 CPU時(shí)間 。 else if(n==1) return 1。 coutendl。 } 函數(shù)的遞歸調(diào)用 n=247 cout7。 if(n10) return。,39。 else{ hanoi(n1,source,target,temp)。 3 A柱有 n個(gè)盤子的情況:將此問題看成上面 n1個(gè)盤子和最下面第 n個(gè)盤子的情況 。 24 遞歸函數(shù)的執(zhí)行分為 “ 遞推 ” 和 “ 回歸 ” 兩個(gè)過程,這兩個(gè)過程由遞歸終止條件控制,即 逐層遞推 ,直至 遞歸終止條件 ,然后 逐層回歸 。 n=1 n=3 cout3。 } n=4 cout4。 coutn39。 在函數(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)用。 int m=1。具有動(dòng)態(tài)生命期的變量存放在堆區(qū)。 具有靜態(tài)生命期的標(biāo)識(shí)符在未被用戶初始化的情況下 , 系統(tǒng)會(huì)自動(dòng)將其初始化為全 0。靜態(tài)存儲(chǔ)類型的作用域與外部存儲(chǔ)類型相反,一旦定義為靜態(tài)存儲(chǔ)類型,就限制該變量或函數(shù)只能在定義它的文件中使用。 int n。 在由多個(gè)源程序文件組成的程序中 , 如果一個(gè)文件要使用另一個(gè)文件中定義的全局變量或函數(shù) , 這些源程序文件之間通過外部類型的變量和函數(shù)進(jìn)行溝通 。i++) coutst()39。 } void main(){ int i。\t39。 for(i=0。 局部靜態(tài)變量 【 例 4. 10】 自動(dòng)變量與局部靜態(tài)變量的區(qū)別 。 其空間分配于塊始 , 空間釋放于塊終 , 且由系統(tǒng)自動(dòng)進(jìn)行 。 如果某個(gè)文件中說明了具有文件作用域的標(biāo)識(shí)符 , 該文件又被另一個(gè)文件包含 , 則該標(biāo)識(shí)符的作用域延伸到新的文件中 。i39。\t39。 cout n39。b=bendl。,39。,39。\t39。 cout“a=a39。 塊中定義的標(biāo)識(shí)符 , 作用域在塊內(nèi) 。 fun2(x)。 這種 “ 動(dòng)態(tài) ” 是通過棧由系統(tǒng)自動(dòng)管理進(jìn)行的 。 局部變量 打印 main()中的 t= 調(diào)用 fun( ) 函數(shù) fun( ) 打印 fun()中的 t=5 打印 main()中的 t= t= t = 5 【 例 4. 9】 使用局部變量的例子 。 coutnendl。參見第七章。 for(intj=0。amp。//函數(shù)原型 void main(){ coutsetw(10)39。 cout”2 工程報(bào)表” endl。 switch(choice){ case 1: account_report()。 include void menu_print()。 } 函數(shù)返回值 函數(shù)可以有返回值 , 也可以沒有返回值 。 c 39。 cinabc。設(shè)計(jì)一個(gè)主函數(shù)完成函數(shù)測試。n)=power(c,n)endl。 float x=。 coutpower(n39。 char c=39。,3 ) 函數(shù)power(39。 coutpower(c39。 return pow。而對應(yīng)參數(shù)的參數(shù)名則不要求相同。 程序如下 : include float max(float x,float y){ return(x=y?x:y)。因此,只有那些功能上起自變量作用的變量才必須作為參數(shù)定義在參數(shù)表中;函數(shù)體中具體描述 “ 如何做 ” ,因此除參數(shù)之外的為實(shí)現(xiàn)算法所需用的變量應(yīng)當(dāng)定義在函數(shù)體內(nèi)。 函數(shù)之間的調(diào)用關(guān)系見下圖: 函數(shù)概述 main ( ) fun2( ) fun1( ) fun3( ) fun1_1( ) fun2_1( ) fun2_2( ) 圖 函數(shù)調(diào)用層次關(guān)系 函數(shù)概述 函數(shù) 按是否帶有參數(shù) , 分為 : 無參函數(shù) 和 有參函數(shù) 函數(shù)按其是否系統(tǒng)預(yù)定義分為兩類,一類是編譯系統(tǒng)預(yù)定義的,稱為 庫函數(shù) 或 標(biāo)準(zhǔn)函數(shù) ,如一些常用的數(shù)學(xué)計(jì)算函數(shù)、字符串處理函數(shù)、圖形處理函數(shù)、標(biāo)準(zhǔn)輸入輸出函數(shù)等。 在面向?qū)ο蟮某绦蛟O(shè)計(jì)中,類中所封裝的操作是用函數(shù)進(jìn)行描述的,因此函數(shù)在 C++程序中具有非常重要的意義。 在結(jié)構(gòu)化程序設(shè)計(jì)中,函數(shù)是將任務(wù)進(jìn)行模塊劃分的基本單位。 而其他一般函數(shù)既可以調(diào)用也可以被調(diào)用 。從函數(shù)的定義看出,函數(shù)頭正是用來反映函數(shù)的功能和使用接口,它所定義的是 “ 做什么 ” ,在這部分必須明確 “ 黑匣子 ” 的輸入輸出部分, 輸出就是函數(shù)的返回值,輸入就是參數(shù) 。 其中求兩個(gè)實(shí)數(shù)中的較大數(shù)用函數(shù)完成 。一般情況下, 實(shí)參和形參的個(gè)數(shù)和排列順序應(yīng)一一對應(yīng),并且對應(yīng)參數(shù)應(yīng)類型匹配(賦值兼容) ,即實(shí)參的類型可以
點(diǎn)擊復(fù)制文檔內(nèi)容
高考資料相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1