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

正文內(nèi)容

安徽工程科技學(xué)院-在線瀏覽

2025-03-28 10:22本頁(yè)面
  

【正文】 、 類型一致 。 實(shí)參和形參分別屬于主調(diào)函數(shù)和被調(diào)函數(shù) ,具有不同的內(nèi)存單元 。 3.實(shí)參和形參的結(jié)合方式 C語(yǔ)言中實(shí)參和形參的結(jié)合采取的是“單向值傳遞”方式,只有實(shí)參傳遞參數(shù)給形參,形參不回傳參數(shù)給實(shí)參。 例 實(shí)參和形參的結(jié)合方式示例 。 float add()。 sum=add(a,b)。 } float add( x, y) float x,y。 z=x+y。 } 程序從主函數(shù)開始執(zhí)行 , 首先輸入 a, b的數(shù)值 ( 假如輸入3, 5) , 接下來調(diào)用函數(shù) add(a,b)。 ( 1) 給形參 x, y分配內(nèi)存空間 。 ( 3) 執(zhí)行函數(shù)體 。 即給 z分配存儲(chǔ)空間 。 ③ 執(zhí)行 return語(yǔ)句 , 完成以下功能 。 ? 釋放函數(shù)調(diào)用過程中分配的所有內(nèi)存空間 , 即釋放 x, y, z的內(nèi)存空間 。 調(diào)用結(jié)束后繼續(xù)執(zhí)行 main()函數(shù)直至結(jié)束 。 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)用時(shí) 調(diào)用結(jié)束后 圖 例 函數(shù)調(diào)用的具體形式 有些函數(shù)有返回值 , 有些沒有返回值 , 這兩種函數(shù)的調(diào)用形式不同 。 即函數(shù)返回值參與表達(dá)式的運(yùn)算 。 即函數(shù)返回值又作為另一個(gè)函數(shù)的實(shí)參 。 ( 1) 實(shí)參的類型應(yīng)和形參的類型匹配 。 ( 3) 實(shí)參的個(gè)數(shù)和形參應(yīng)該一致 。 ( 5) 有值函數(shù)才可以參于表達(dá)式的運(yùn)算 。 例 函數(shù)嵌套示例 。 程序由 3個(gè)函數(shù)構(gòu)成 , 分別是主函數(shù) main()、函數(shù) f1()、 函數(shù) f2()。 s i n (x ) { … ⑦ } mai n () ① { … ② s + = f 2 (x , h )。 float s=0, h=,x。x5。 printf(%f\n,s)。 { float f1()。 } float f1(x) float x。 } 函數(shù)的遞歸調(diào)用 函數(shù)的遞歸調(diào)用是函數(shù)嵌套調(diào)用的特殊形式 。 例 用遞歸法計(jì)算 n!。 if(n==0||n==1) f=1。 return(f)。 float y。 printf(input n: )。 y=fac(n)。 } 數(shù)組作函數(shù)參數(shù) 數(shù)組元素作函數(shù)的參數(shù) 數(shù)組元素作函數(shù)的參數(shù)與普通變量作函數(shù)的參數(shù)本質(zhì)相同 。 數(shù)組中元素作為函數(shù)的實(shí)參 , 與簡(jiǎn)單變量作為實(shí)參一樣 , 結(jié)合的方式是單向的值傳遞 。 float max(float x,float y) { if(xy) return x。 } main() { float m,a[]={,100,50,67,65,78,98,89,20}。 m=a[0]。k10。 printf(% .2f\n,m)。 在函數(shù)調(diào)用時(shí) , 實(shí)參給形參傳遞的數(shù)據(jù)是實(shí)參數(shù)組的首地址 , 即實(shí)參數(shù)組和形參數(shù)組完全等同 , 是存放在同一存儲(chǔ)空間的同一個(gè)數(shù)組 , 形參數(shù)組和實(shí)參數(shù)組共享存儲(chǔ)單元 。 例 編寫函數(shù)實(shí)現(xiàn)數(shù)組的逆序存放。 void change(x) int x[]。x[0]=x[1]。 } main() { void change()。 printf(" before:a[0]=% d,a[1]=% d\n" ,a[0],a[1])。 printf(" after:a[0]=% d,a[1]=% d\n" ,a[0],a[1])。因?yàn)?,?shù)組名作函數(shù)的形參和實(shí)參時(shí),調(diào)用函數(shù)把實(shí)參數(shù)組的首地址傳遞給形參數(shù)組,這樣兩個(gè)數(shù)組共享存儲(chǔ)單元,在函數(shù)調(diào)用時(shí)對(duì)形參數(shù)組元素值的交換,實(shí)質(zhì)上也是對(duì)實(shí)參數(shù)組元素值的交換。 ( 1) 數(shù)組名作函數(shù)參數(shù)時(shí) , 可省略數(shù)組的長(zhǎng)度 。 ( 3) 實(shí)參數(shù)組應(yīng)足夠大 , 即實(shí)參數(shù)組提供的內(nèi)存空間應(yīng)大于或等于形參數(shù)組需要的內(nèi)存空間 。 例 編寫函數(shù)用 “ 起泡法 ” 排序 。 假設(shè)有 5個(gè)數(shù) 8, 3, 9, 4, 1, 存儲(chǔ)到 a數(shù)組中 , 采用 “ 起泡法 ” 從大到小排序的過程如下 。 ( 2) 對(duì)前4個(gè)數(shù)兩兩比較得到序列 ( 3,4,1,8,9) 。 ( 4) 對(duì)前 2個(gè)數(shù)兩兩比較得到序列 ( 1,3,4,8,9) 。 從分析編寫程序如下。 int a[N],i。iN。 sort(a,N)。iN。 printf(\n)。 for(i=0。i++) printf(% 8d,a[i])。 } void sort(array,n) int array[],n。 for(i=n1。i) for(j=0。j++) if(array[j]array[j+1]) { t=array[j]。 array[j+1]=t。局部變量的作用范圍是定義它的函數(shù)。 ( 1)主函數(shù)中定義的變量也只能在主函數(shù)中使用,不能在其他函數(shù)中使用。 ( 3)允許在不同的函數(shù)中使用相同的變量名,它們代表不同的對(duì)象,分配不同的單元,互不干擾。 全局變量 函數(shù)外定義的變量稱作全局變量 。 全局變量的作用范圍是從定義變量的位置開始到它所在源文件的結(jié)束 。 完整的變量定義應(yīng)該確定它的兩種屬性:存儲(chǔ)類型和數(shù)據(jù)類型 。 變量在計(jì)算機(jī)內(nèi)存的存儲(chǔ)情況分為靜態(tài)存儲(chǔ)和動(dòng)態(tài)存儲(chǔ)兩種 。 自動(dòng)存儲(chǔ)類型的變量具有動(dòng)態(tài)性。自動(dòng)存儲(chǔ)類型變量的存儲(chǔ)單元分配在動(dòng)態(tài)數(shù)據(jù)區(qū)。 例如 , register int a,b。 寄存器型變量具有動(dòng)態(tài)性。 外部存儲(chǔ)類型 關(guān)鍵字 extern表示變量是外部存儲(chǔ)類型 。 表示定義變量 x, y是雙精度浮點(diǎn)型并且是外部存儲(chǔ)類型 。外部存儲(chǔ)類型變量定義在函數(shù)外部,它的作用域?yàn)閺淖兞康亩x處開始,到本程序文件的末尾。 例如 , static double x,y。 靜態(tài)存儲(chǔ)類型變量具有靜態(tài)性。在整個(gè)程序運(yùn)行期間,靜態(tài)型變量都占據(jù)存儲(chǔ)單元。根據(jù)函數(shù)能否被其他源程序文件調(diào)用,將函數(shù)分為內(nèi)部函數(shù)和外部函數(shù)。在定義內(nèi)部函數(shù)時(shí),在函數(shù)名和函數(shù)類型的前面加 static。使用內(nèi)部函數(shù),可以使函數(shù)只局限于所在文件,如果在不同的文件中有同名的內(nèi)部函數(shù),互不干擾。 ? ? ( 1)在定義函數(shù)時(shí),如果在函數(shù)首部的最左端冠以關(guān)鍵字 extern,則表示此函數(shù)是外部函數(shù),可供其他文件調(diào)用。C語(yǔ)言規(guī)定,如果在定義函數(shù)時(shí)省略extern,則隱含為外部函數(shù)。 ? ( 2)在需要調(diào)用此函數(shù)的文件中,用extern聲明所用的函數(shù)是外部函數(shù)。用外部函數(shù)實(shí)現(xiàn)。 ? /*以上 3行聲明在本函數(shù)中將要調(diào)用的在其他文件中定義的 3個(gè)函數(shù)*/ char c; char str[80]; enter_strng(str); scanf(%c, c); delete_string(str,c); print_string(str); } (文件 2) include ? enter_string(char str[80]) /*定義外部函數(shù)enter_srting*/ ? { gets(str);} /*向字符數(shù)組輸入字符串 */ (文件 3) delete_string(char str [],char ch) /*定義外部函數(shù) delete_string*/ { int i,j; for(i=j=0; str[i]!=\0 ; i++) if(str[i]!=ch) str[j++]=str[i]。 } 運(yùn)行情況如下: abcdefgc↙ (輸入 str) c↙ (輸入要?jiǎng)h去的字符 ) abdefg (輸出已刪去指定字符的字符串) 整個(gè)程序由 4個(gè)文件組成。主函數(shù)是主控函數(shù),除聲明部分外,由 4個(gè)函數(shù)調(diào)用語(yǔ)句組成。函數(shù) delete_string的作用是根據(jù)給定的字符串和要?jiǎng)h除的字符 ch,對(duì)字符串作刪除處理。 從 str[0]開始逐個(gè)檢查數(shù)組元素值是否等于指定要?jiǎng)h除的字符, 若不是就留在數(shù)組中,若是就不保留。這個(gè)題目當(dāng)然可以設(shè)兩個(gè)數(shù)組,把不刪除的字符 ―― 賦給新數(shù)組。由于 I總是二于或等于 j,因此最后保留下來的字符不會(huì)覆蓋未被檢測(cè)處理的字符。 ? 程序中 3個(gè)函數(shù)都定義為外部函數(shù)。 ? 通過此例可知:使用 extern聲明就能夠在一個(gè)文件中調(diào)用其他文件中定義的函數(shù),或者說把該函數(shù)的作用域擴(kuò)展到本文件。由于函數(shù)在本質(zhì)上是外部的,在程序中經(jīng)常要調(diào)用外部函數(shù) ,耿方便編程, C語(yǔ)言允許在聲明函數(shù)時(shí)省寫 extern。由此可以進(jìn)一步理解函數(shù)原型的作用。只要在使用該函數(shù)的每一個(gè)文件中包含該函數(shù)的函數(shù)原型即可。 ? 利用函數(shù)原型擴(kuò)展函數(shù)作用域最常見的例子是# include命令的應(yīng)用。例如,在程序中需要調(diào)用 sin函數(shù),但三角函數(shù)并不是由用戶在本文件中定義的,而是存放在數(shù)學(xué)函數(shù)庫(kù)中的。 Sin函數(shù)的原型是 double sin(double x) ? 顯然,要求程序設(shè)計(jì)者在調(diào)用庫(kù)函數(shù)時(shí)先從手冊(cè)可查出所用的庫(kù)函數(shù)的原型,并在程序中一一寫出來是麻煩而困難的。 6. 9 編譯預(yù)處理 ANSI C標(biāo)準(zhǔn)規(guī)定可以在 C源程序中加入一些“預(yù)處理命令”( preprocessor directives),以改進(jìn)程序設(shè)計(jì)環(huán)境,提高編程效率。)必須在對(duì)程序進(jìn)行通常的編譯(包括詞法和語(yǔ)法分析、代碼生成、優(yōu)化等)之前,先對(duì)程序中這些特殊的命令進(jìn)行“預(yù)處理”,即根據(jù)預(yù)處理命令對(duì)程序作相應(yīng)的處理(例如,若程序中用# define命令定義了一個(gè)符號(hào)常量 A,則在預(yù)處理時(shí)將程序中所有的 A都置換為指定的字符串。 經(jīng)過預(yù)處理后程序不再包括預(yù)處理命令了,最后再由編譯程序?qū)︻A(yù)處理后的源程序進(jìn)行通常的編譯處理,得到可供執(zhí)行的目標(biāo)代碼。因此不少用戶誤認(rèn)為預(yù)處理命令是 C語(yǔ)言的一部分,甚至以為它們是 C語(yǔ)句,這是不對(duì)的。 C語(yǔ)言與其他高級(jí)語(yǔ)言的一個(gè)重要區(qū)別是可以使用預(yù)處理命令和具有預(yù)處理的功能。為了與一般 C語(yǔ)句相區(qū)別,這些命令以符號(hào)“#”開頭。如: # define PI 它的作用是指定用標(biāo)識(shí)符 PI來代替“ ”這個(gè)字符串,在編譯預(yù)處理時(shí),將程序中在該命令以后出現(xiàn)的所有的 PI都用“ ”代替。# define是宏定義命令。但這并非規(guī)定,也可用小寫字母。例如,如果不定義 PI代表 ,不僅麻煩,而且容易寫錯(cuò)(或敲錯(cuò)),用宏名代替,簡(jiǎn)單不易出錯(cuò),因?yàn)橛涀∫粋€(gè)宏名(它的名字往往用容易理解的單詞表示)要比記住一個(gè)無(wú)規(guī)律的字符串容易,而且在讀程序時(shí)能立即知道它的含義,當(dāng)需要改變某一個(gè)常量時(shí),可以只改變# define命令行,一改全改。 ? ( 3)宏定義是用宏名代替一個(gè)字符串,也就是作簡(jiǎn)單的置換,不作正確性檢查。也就是說預(yù)編譯時(shí)不作任何語(yǔ)示檢查。 ? ( 4)宏定義不是 C語(yǔ)句,不必在行末加分號(hào)。如: ? define PI ; ? area=PI*r*r。 ? ( 5) define命令出現(xiàn)在程序中函數(shù)的外面,宏名的有效范圍為定義命令之后到本源文件結(jié)束。 ? ( 6)可以用 undef命令終止宏定義的作用域。這樣可以靈活控制宏定義的作用范圍。 【例 】 define R define PI define L 2*PI*R define S PI*R*R main( ) { printf(” L=%f\nS=%f\n” ,L,S)。 ? ( 8)對(duì)程序中用雙撇號(hào)括起來的字符串內(nèi)的字符,即使與宏名相同,也不進(jìn)行置換
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1