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

正文內(nèi)容

安徽工程科技學(xué)院-文庫吧

2025-02-14 10:22 本頁面


【正文】 數(shù)調(diào)用前后實參 、 形參的變化情況如圖 。 y 主 a b a b 調(diào) 函 數(shù) 被 調(diào) x,y 不存在 函 數(shù) 50 4 5 50 4 5 50 4 5 x 調(diào)用時 調(diào)用結(jié)束后 圖 例 函數(shù)調(diào)用的具體形式 有些函數(shù)有返回值 , 有些沒有返回值 , 這兩種函數(shù)的調(diào)用形式不同 。 1. 有值函數(shù)的調(diào)用形式 ( 1) 函數(shù)調(diào)用作為表達式的一部分 。 即函數(shù)返回值參與表達式的運算 。 ( 2) 作為函數(shù)參數(shù) 。 即函數(shù)返回值又作為另一個函數(shù)的實參 。 2. 無值函數(shù)的調(diào)用形式 無值函數(shù)調(diào)用是作為獨立的函數(shù)調(diào)用語句出現(xiàn)的語句 , 其功能類似于一個過程 。 ( 1) 實參的類型應(yīng)和形參的類型匹配 。 ( 2) 實參和形參的結(jié)合方向是自右向左的 。 ( 3) 實參的個數(shù)和形參應(yīng)該一致 。 ( 4) 實參可以是任意能夠代表 “ 確定的值 ” 的內(nèi)容 。 ( 5) 有值函數(shù)才可以參于表達式的運算 。 函數(shù)的嵌套及遞歸調(diào)用 函數(shù)的嵌套調(diào)用 嵌套調(diào)用指的是在函數(shù)的調(diào)用過程中又出現(xiàn)了另外一種函數(shù)調(diào)用,稱為函數(shù)的嵌套調(diào)用。 例 函數(shù)嵌套示例 。 以下程序的功能是計算 x2?sinx在區(qū)間 [0, 5]的定積分 。 程序由 3個函數(shù)構(gòu)成 , 分別是主函數(shù) main()、函數(shù) f1()、 函數(shù) f2()。 main()調(diào)用函數(shù) f2(), 在函數(shù)f2()的執(zhí)行過程中又調(diào)用了函數(shù) f1(), main()嵌套調(diào)用了函數(shù) f1()。 s i n (x ) { … ⑦ } mai n () ① { … ② s + = f 2 (x , h )。 … (1 3 ) (1 2 ) } f 2 (x , h ) ③ { … ④ f 1 (x ) … (1 1 ) (1 0 ) } f 1 (x ) ⑤ { … ⑥ s i n (x ) … ⑨ ⑧ } 圖 例 include main() { float f2()。 float s=0, h=,x。 for(x=0。x5。x+=h) s+=f2(x,h)。 printf(%f\n,s)。 } float f2(x,h) float x,h。 { float f1()。 return ((f1(x)+f1(x+h))*h/2 )。 } float f1(x) float x。 { return (x*x+sin(x))。 } 函數(shù)的遞歸調(diào)用 函數(shù)的遞歸調(diào)用是函數(shù)嵌套調(diào)用的特殊形式 。 一個函數(shù)在它的函數(shù)體內(nèi)直接或間接地調(diào)用了自己的函數(shù)稱為函數(shù)的遞歸調(diào)用 。 例 用遞歸法計算 n!。 float fac(int n) { float f。 if(n==0||n==1) f=1。 else f=fac(n1)*n。 return(f)。 } main()函數(shù)如下: main() { int n。 float y。 float fac()。 printf(input n: )。 scanf(%d,n)。 y=fac(n)。 printf(%d!=%.0f\n,n,y)。 } 數(shù)組作函數(shù)參數(shù) 數(shù)組元素作函數(shù)的參數(shù) 數(shù)組元素作函數(shù)的參數(shù)與普通變量作函數(shù)的參數(shù)本質(zhì)相同 。 數(shù)組元素作函數(shù)實參時 , 僅僅是將其代表的值作為實參處理 。 數(shù)組中元素作為函數(shù)的實參 , 與簡單變量作為實參一樣 , 結(jié)合的方式是單向的值傳遞 。 例 數(shù)組元素作函數(shù)的參數(shù)示例。 float max(float x,float y) { if(xy) return x。 else return y。 } main() { float m,a[]={,100,50,67,65,78,98,89,20}。 int k。 m=a[0]。 for(k=1。k10。k++) m=max(m,a[k])。 printf(% .2f\n,m)。 } 程序運行的結(jié)果為: 數(shù)組名作函數(shù)的參數(shù) 數(shù)組名代表數(shù)組的首地址 , 在數(shù)組名作為函數(shù)的參數(shù)時 , 形參和實參都應(yīng)該是數(shù)組名 。 在函數(shù)調(diào)用時 , 實參給形參傳遞的數(shù)據(jù)是實參數(shù)組的首地址 , 即實參數(shù)組和形參數(shù)組完全等同 , 是存放在同一存儲空間的同一個數(shù)組 , 形參數(shù)組和實參數(shù)組共享存儲單元 。 如果在函數(shù)調(diào)用過程中形參數(shù)組的內(nèi)容被修改了 ,實際上也是修改了實參數(shù)組的內(nèi)容 。 例 編寫函數(shù)實現(xiàn)數(shù)組的逆序存放。 程序如下。 void change(x) int x[]。 { temp=x[0]。x[0]=x[1]。x[1]=temp。 } main() { void change()。 int a[2]={12,24}。 printf(" before:a[0]=% d,a[1]=% d\n" ,a[0],a[1])。 change(a)。 printf(" after:a[0]=% d,a[1]=% d\n" ,a[0],a[1])。 } 程序運行的結(jié)果為: before:a[0]=12,a[1]=24 after:a[0]=24,a[1]=12 顯然,用數(shù)組名作函數(shù)的參數(shù),才能真正實現(xiàn)兩個數(shù)據(jù)的交換。因為,數(shù)組名作函數(shù)的形參和實參時,調(diào)用函數(shù)把實參數(shù)組的首地址傳遞給形參數(shù)組,這樣兩個數(shù)組共享存儲單元,在函數(shù)調(diào)用時對形參數(shù)組元素值的交換,實質(zhì)上也是對實參數(shù)組元素值的交換。 用數(shù)組名作為函數(shù)參數(shù)應(yīng)注意以下幾點 。 ( 1) 數(shù)組名作函數(shù)參數(shù)時 , 可省略數(shù)組的長度 。 ( 2) 形參數(shù)組可以和實參數(shù)組同名 。 ( 3) 實參數(shù)組應(yīng)足夠大 , 即實參數(shù)組提供的內(nèi)存空間應(yīng)大于或等于形參數(shù)組需要的內(nèi)存空間 。 ( 4) 數(shù)組名作函數(shù)參數(shù)時 , 應(yīng)將數(shù)組的長度也作為函數(shù)的參數(shù) , 這樣編寫的函數(shù)具備通用性 。 例 編寫函數(shù)用 “ 起泡法 ” 排序 。 “ 起泡法 ” 的基本思想是對 N個數(shù)構(gòu)成的序列兩兩比較求出最大值 。 假設(shè)有 5個數(shù) 8, 3, 9, 4, 1, 存儲到 a數(shù)組中 , 采用 “ 起泡法 ” 從大到小排序的過程如下 。 ( 1) 對 5個數(shù)兩兩比較 , 如果相臨的兩個數(shù)不是從小到大排列的 , 則交換使之變?yōu)閺男〉酱笈帕?, 比較結(jié)束后最大值在序列底部 , 于是得到序列 (3,8,4,1,9)。 ( 2) 對前4個數(shù)兩兩比較得到序列 ( 3,4,1,8,9) 。 ( 3) 對前 3個數(shù)兩兩比較得到序列 ( 3,1,4,8,9) 。 ( 4) 對前 2個數(shù)兩兩比較得到序列 ( 1,3,4,8,9) 。 排序工作結(jié)束 。 從分析編寫程序如下。 define N 10 main() { void sort()。 int a[N],i。 for(i=0。iN。i++) scanf(% d,a[i])。 sort(a,N)。 for(i=0。iN。i++) printf(% 8d,a[i])。 printf(\n)。 sort(a,5)。 for(i=0。i5。i++) printf(% 8d,a[i])。 printf(\n)。 } void sort(array,n) int array[],n。 { int i,j,t。 for(i=n1。i0。i) for(j=0。ji。j++) if(array[j]array[j+1]) { t=array[j]。 array[j]=array[j+1]。 array[j+1]=t。 } } 運行程序,輸入: 123 456 123 456 1 23 5885 34 101 10↙ 則輸出: 456 123 1 10 23 34 101 123 456 5885 456 123 1 10 23 變量的作用域 局部變量 在一個函數(shù)內(nèi)定義的變量稱為局部變量。局部變量的作用范圍是定義它的函數(shù)。 關(guān)于局部變量的作用域需要說明以下幾點。 ( 1)主函數(shù)中定義的變量也只能在主函數(shù)中使用,不能在其他函數(shù)中使用。 ( 2)形參屬于被調(diào)函數(shù)的局部變量,實參屬于主調(diào)函數(shù)的局部變量。 ( 3)允許在不同的函數(shù)中使用相同的變量名,它們代表不同的對象,分配不同的單元,互不干擾。 ( 4)在復(fù)合語句中也可定義變量,其作用域只在本復(fù)合語句范圍內(nèi)。 全局變量 函數(shù)外定義的變量稱作全局變量 。 全局變量可以被定義它的文件中的所有函數(shù)使用 。 全局變量的作用范圍是從定義變量的位置開始到它所在源文件的結(jié)束 。 變量的存儲方式 C語言中的變量不僅有類型屬性,而且還有存儲類別的屬性。 完整的變量定義應(yīng)該確定它的兩種屬性:存儲類型和數(shù)據(jù)類型 。 變量定義的完整形式為: [ 存儲類型 ] 類型說明符 變量名表列; C語言中 , 變量有 4種存儲類型 , 分別為自動類型 、 靜態(tài)類型 、 外部類型和寄存器類型 。 變量在計算機內(nèi)存的存儲情況分為靜態(tài)存儲和動態(tài)存儲兩種 。 自動存儲類型 關(guān)鍵字 auto表示變量是自動存儲類型 。 自動存儲類型的變量具有動態(tài)性。自動存儲類型變量的作用范圍僅局限于定義它的函數(shù)。自動存儲類型變量的存儲單元分配在動態(tài)數(shù)據(jù)區(qū)。 寄存器存儲類型 關(guān)鍵字 register表示變量是寄存器存儲類型 。 例如 , register int a,b。 表示定義變量 a, b是整型并且是寄存器存儲類型 。 寄存器型變量具有動態(tài)性。寄存器存儲類型變量的作用范圍也是僅局限于定義它的函數(shù)。 外部存儲類型 關(guān)鍵字 extern表示變量是外部存儲類型 。 例如 , extern double x,y。 表示定義變量 x, y是雙精度浮點型并且是外部存儲類型 。 外部存儲類型變量具有靜態(tài)性。外部存儲類型變量定義在函數(shù)外部,它的作用域為從變量的定義處開始,到本程序文件的末尾。 靜態(tài)存儲類型 關(guān)鍵字 static表示變量是靜態(tài)存儲類型 。 例如 , static double x,y。 表示定義變量 x, y是雙精度浮點型并且是靜態(tài)存儲類型 。 靜態(tài)存儲類型變量具有靜態(tài)性。靜態(tài)存儲類型變量可以定義在函數(shù)內(nèi)部,也可以定義在函數(shù)外部。在整個程序運行期間,靜態(tài)型變量都占據(jù)存儲單元。 6. 8 內(nèi)部函數(shù)和外部函數(shù) 同一個源程序文件中的函數(shù)之間是可以互相調(diào)用的,不同源程序文件中的函數(shù)之間也是可以互相調(diào)用的,根據(jù)需要我們也可以指定函數(shù)不能被其他文件調(diào)用。根據(jù)函數(shù)能否被其他源程序文件調(diào)用,將函數(shù)分為內(nèi)部函數(shù)和外部函數(shù)。 如果一個函數(shù)只能被本文件中其他函數(shù)所調(diào)用,它稱為內(nèi)部函數(shù)。在定義內(nèi)部函數(shù)時,在函數(shù)名和函數(shù)類型的前面加 static。即 static
點擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1