




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、東軟睿道內(nèi)部公開(kāi)文件編號(hào): D000-C語(yǔ)言基礎(chǔ)版本:1.0.0-0.0.02015-6-1東軟睿道教育(所有,)Copyright © Neusoft Educational Information Technology Co.,sV1.0文件修改V1.0修改編號(hào)版本修改條款及內(nèi)容修改日期11.0.0-0.0.0創(chuàng)建2015-6-1C語(yǔ)言編程基礎(chǔ)函數(shù)V1.0函數(shù)的 從函數(shù)的參數(shù)形式看,函數(shù)可分為兩類(lèi): 無(wú)參函數(shù); 有參函數(shù) 。 無(wú)參函數(shù)的定義形式返回值類(lèi)型 函數(shù)名(部分;語(yǔ)句; 例如:void print_message()printf(“n Hello!”);)V1.0無(wú)參數(shù)函數(shù)
2、的 有參函數(shù)的定義形式返回值類(lèi)型 函數(shù)名(形式參數(shù)列表)部分語(yǔ)句 例如:int max (int x, int y)/*求x和y二者中大者,x,y為形參*/int z; z=x>y?x:y; return (z);/*函數(shù)體中變量的*/*將z作為函數(shù)返回值*/V1.0函數(shù)的函數(shù): 同變量一樣,函數(shù)的調(diào)用也應(yīng)該遵循“先原則。,后使用”的 函數(shù)的一般形式如下:返回值類(lèi)型 函數(shù)名(類(lèi)型1,類(lèi)型2,); 或返回值類(lèi)型函數(shù)名(類(lèi)型1 形參1,類(lèi)型2 形參2,);以下的2中函數(shù)方法都是合法的:float max(int, int);floatmax(int x, int y); 說(shuō)明: 被調(diào)函數(shù)定義
3、在主調(diào)函數(shù)之前,可以不進(jìn)行函數(shù)。V1.0函數(shù)的函數(shù) 函數(shù)和函數(shù)定義的區(qū)別的作用是把函數(shù)的名字、函數(shù)返回值類(lèi)型以及形參的類(lèi)型、個(gè)數(shù)和順序通知編譯器,以便于編譯器檢查函數(shù)調(diào)用的。 函數(shù)定義是指對(duì)函數(shù)功能的確立,包括指定函數(shù)名、函數(shù)體、返回值類(lèi)型、形參及其類(lèi)型等,它是一個(gè)完整的、。的函數(shù)V1.0函數(shù)的形參和實(shí)參 形式參數(shù):在函數(shù)或,函數(shù)名后面括弧中的變量名,被稱(chēng)為形式參數(shù),簡(jiǎn)稱(chēng)形參。 實(shí)際參數(shù):在函數(shù)調(diào)用時(shí),函數(shù)名后面括弧中的表 稱(chēng)為實(shí)際參數(shù),簡(jiǎn)稱(chēng)實(shí)參。例:,被V1.001 int max( int x, int y,int z) 02 int m;03 m=x>y?x:y;04 m=m>
4、;z?m:z;05 return(m);06 實(shí)參表形參表00 #include <stdio.h>01 int max( int x, int y, int z); 02 void main( ) 03int a,b,c,m;04scanf (“%d,%d,&a,&b);05 m=max(a,b,c);06 printf(“Max is %d”,m); 07 函數(shù)的形參和實(shí)參說(shuō)明: 形參調(diào)用前不占內(nèi)存,調(diào)用時(shí)才占用,調(diào)用后; 形參是函數(shù)的內(nèi)部變量,只能在函數(shù);對(duì)每個(gè)形參必須指明其名字和數(shù)據(jù)類(lèi)型; 實(shí)參可以是、變量或表,并且必須有確定的值; 實(shí)參個(gè)數(shù)、類(lèi)型必須與對(duì)應(yīng)
5、的形參一致,類(lèi)型不一致會(huì)發(fā)生 類(lèi)型轉(zhuǎn)換; 實(shí)參對(duì)形參的數(shù)據(jù)傳遞是值傳遞,即單向傳遞,只由實(shí)參傳遞給形參,反之不可。調(diào)用結(jié)束后,只有形參單元被實(shí)參單元中的值不變。,V1.0函數(shù)的返回值 定義:通過(guò)函數(shù)調(diào)用使主調(diào)函數(shù)得到一個(gè)確定的值,稱(chēng)為函數(shù)的返回值。例如:c=max(3, 5);此時(shí)函數(shù)的返回值是5,因此c=5。 函數(shù)返回語(yǔ)句return函數(shù)返回值是通過(guò) return語(yǔ)句獲得的。 return語(yǔ)句將被調(diào)函數(shù)的確定的值交給主調(diào)函數(shù)。V1.0函數(shù)的返回值 return語(yǔ)句的一般形式: return(函數(shù)返回值); 說(shuō)明:或return函數(shù)返回值; “函數(shù)返回值”可以用、變量或表表示。 一個(gè)函數(shù)中可以
6、有多個(gè)return語(yǔ)句,但是一次函數(shù)執(zhí)行只能執(zhí)行其中的一個(gè)。當(dāng)執(zhí)行到某個(gè)return語(yǔ)句時(shí),則終止本次函數(shù)執(zhí)行,并帶回函數(shù)值。 若函數(shù)體內(nèi)沒(méi)有return語(yǔ)句,就一直將函數(shù)的語(yǔ)句,再返回調(diào)用函數(shù),將一個(gè)不確定的值帶回。 return后面可以無(wú)“返回值”(即 return ;),則該return語(yǔ)句只起到終止函數(shù)執(zhí)行、返回主調(diào)函數(shù)的作用。V1.0return (x>y? x:y);z=x>y? x:y; return(z);函數(shù)的返回值函數(shù)返回值的類(lèi)型 函數(shù)應(yīng)該指定函數(shù)返回值的類(lèi)型,該類(lèi)型應(yīng)與return表的類(lèi)型一致。 說(shuō)明: 若函數(shù)返回類(lèi)型和return表的類(lèi)型不一致,表數(shù)據(jù)要服從
7、函數(shù)的返回類(lèi)型,服從表現(xiàn)為自動(dòng)類(lèi)型轉(zhuǎn)換。即函數(shù)返回類(lèi)型決定了表的類(lèi)型。 若無(wú)法進(jìn)行類(lèi)型轉(zhuǎn)換,則程序編譯報(bào)錯(cuò)。 如果函數(shù)不返回任何值,函數(shù)定義為“無(wú)類(lèi)型”void(或稱(chēng)“空類(lèi)型”)。例:void print_star()V1.0函數(shù)調(diào)用的3種形式 函數(shù)調(diào)用的一般形式 :有參數(shù)函數(shù):函數(shù)名(實(shí)參列表) 無(wú)參數(shù)函數(shù):函數(shù)名( ) 說(shuō)明: 實(shí)參列表要用逗號(hào)隔開(kāi); 實(shí)參列表中的參數(shù)可以是、變量或表; 實(shí)參與形參個(gè)數(shù)相等,類(lèi)型應(yīng)一致; 實(shí)參與形參按順序?qū)?yīng),一一傳遞數(shù)據(jù); 實(shí)參列表的求值順序與具體編譯器有關(guān)。V1.0函數(shù)調(diào)用的3種形式 把函數(shù)調(diào)用作為一個(gè)語(yǔ)句 : 一般形式:函數(shù)名(實(shí)參列表); 使用情況:
8、這種方式常用于調(diào)用一個(gè)可以忽略返回值或沒(méi)有返回值的函數(shù)時(shí)。如, 的調(diào)用。對(duì)scanf函數(shù)和printf函數(shù) 函數(shù)調(diào)用出現(xiàn)在表(函數(shù)表)中: 一般形式: 變量名=函數(shù)表 使用情況:這種方式用于調(diào)用帶返回值的函數(shù),函數(shù)的返回值將參加所在表的運(yùn)算。如:a =3+ max(num1,num2);注意:無(wú)返回值函數(shù)的調(diào)用,不能出現(xiàn)在表中。V1.0函數(shù)調(diào)用的3種形式 函數(shù)調(diào)用出現(xiàn)在函數(shù)參數(shù)中: 一般形式: 函數(shù)名(實(shí)參,函數(shù)名(實(shí)參) 使用情況:這種方式用于調(diào)用帶返回值的函數(shù),函數(shù)的返 回值將作為另一個(gè)函數(shù)的參數(shù)。如:a = max(max(num1,num2), num3);注意:無(wú)返回值函數(shù)的調(diào)用,不
9、能出現(xiàn)在函數(shù)參數(shù)中。V1.0數(shù)組元素做函數(shù)參數(shù) 由于表可以做實(shí)參,數(shù)組元素可以作為表,因此,數(shù)組元素可以做函數(shù)的實(shí)參,并且可以傳遞給形參。 例如:找出數(shù)組中的最大數(shù)int max(int a, int b)int main(void)return a > b ? a : b;int arr = 3, 4, 6, 5, 8, 10;int tmp, cnt; tmp = arr0;for(cnt = 1; cnt < 6; +cnt) tmp = max(tmp, arrcnt);printf(“Max value is : %dn”, tmp);V1.0數(shù)組名作函數(shù)參數(shù) 由于數(shù)組名
10、代表的是數(shù)組在內(nèi)存中存放區(qū)域的首地址。把數(shù) 組名作為函數(shù)參數(shù)來(lái)實(shí)現(xiàn)大量數(shù)據(jù)的傳遞是絕佳的傳遞方法。 數(shù)組名做函數(shù)參數(shù)的具體方法: 在主調(diào)函數(shù)中定義數(shù)組; 被調(diào)函數(shù)中形參是與實(shí)參類(lèi)型一致的數(shù)組; 形參數(shù)組可以不指定數(shù)組大小(這里指一維數(shù)組)。 說(shuō)明: 數(shù)組名做函數(shù)的實(shí)參和形參時(shí),不是“值傳遞”,而是“ 址傳遞”。因此,形參數(shù)組元素的值如果發(fā)生變化,會(huì)使 實(shí)參數(shù)組對(duì)應(yīng)元素的值發(fā)生同樣的改變。V1.0數(shù)組名作函數(shù)參數(shù)舉例:用選擇法對(duì)數(shù)組中10個(gè)整數(shù)按由小到大排序。 程序設(shè)計(jì):函數(shù)sort(array, n) :對(duì)數(shù)組元素按升序排序。主程序 : 為array數(shù)組輸入數(shù)據(jù),調(diào)用 sort 函數(shù)排序,輸出
11、排序后的array數(shù)組。V1.001 void sort (int array , int n) 02 int v, j, k, t;03for (i=0; i<n; i+) 04k=i;05for (j=i+1; j<n; j+)06if (arrayj<arrayk) k=j;/*找到較小者下標(biāo)*/ 07t=arrayk;08 arrayk=arrayi;09 arrayi=t;1011 這是數(shù)組作形參時(shí)常使用的技巧數(shù)組名作函數(shù)參數(shù)V1.012 #include<stdio.h>13 void main ( ) 14 int a10, i;15printf(“
12、enter array: n”); 16for (i=0; i<10; i+)17scanf (“ %d ”,&ai); 18sort(a, 10);19printf(“the sorted array: n”); 20for (i=0; i<10; i+)21 printf (“ %d ”, ai);22 printf(“n”); 23 由于地址傳遞,數(shù)組 a已經(jīng) 改變數(shù)組名作函數(shù)參數(shù)數(shù)組名做參數(shù)的好處: 由于只需向函數(shù)一個(gè)地址值,而無(wú)須全部需要處理的數(shù)據(jù),因此既節(jié)約空間,又并提高了效率。 由于主調(diào)函數(shù)和被調(diào)函數(shù)是在相同的內(nèi)存區(qū)域上對(duì)數(shù)據(jù)進(jìn)行操作,因此可以實(shí)現(xiàn)數(shù)據(jù)的同步更
13、新。V1.0函數(shù)的嵌套調(diào)用 定義:在一個(gè)函數(shù)的執(zhí)行過(guò)程中,又調(diào)用另一個(gè)函數(shù)。 在定義一個(gè)函數(shù)時(shí),若該函數(shù)體內(nèi)包含另一個(gè)函數(shù)的定義,是嵌套定義。C語(yǔ)言函數(shù)不能嵌套定義。函數(shù)嵌套調(diào)用圖示:13245調(diào)調(diào)9876V1.0結(jié)束用B函數(shù)用A函數(shù)B函數(shù)A函數(shù)main函數(shù)void B()void A() B(); void main() A(); 函數(shù)的遞歸調(diào)用 定義: 在函數(shù)的執(zhí)行過(guò)程中直接或間接地調(diào)用該函數(shù)本身。 C語(yǔ)言的特點(diǎn)之一就是 遞歸的形式可分為:直接遞歸調(diào)用函數(shù)遞歸調(diào)用。間接遞歸調(diào)用V1.0函數(shù)的遞歸調(diào)用 說(shuō)明:遞歸應(yīng)避免出現(xiàn)無(wú)終止的遞歸,因此應(yīng)該給出限制遞 歸次數(shù)的條件。 遞歸調(diào)用的一般算法:
14、f(x)=終止表遞歸調(diào)用 兩種成分的作用:遞歸調(diào)用:記住本次調(diào)用現(xiàn)場(chǎng),開(kāi)始下次遞歸調(diào)用。終止表:返回上次調(diào)用現(xiàn)場(chǎng)。V1.0函數(shù)的遞歸調(diào)用用遞歸法求n! 。分析:根據(jù)數(shù)學(xué)知識(shí)可知:n! = n* (n-1)!算法:1f(n-1)*n(n=1)(n>1)f(n)=實(shí)現(xiàn):V1.0int fac(int n) int f; if(n=1)f=1;elsef=fac(n-1)*n;return f;(n-1)! = (n-1)*(n-2)!局部變量 定義:在函數(shù)內(nèi)部或復(fù)合語(yǔ)句內(nèi)部定義的變量稱(chēng)作局部變量。 作用域:是指變量的可用范圍。局部變量的作用域:僅限于函數(shù)內(nèi)或復(fù)合語(yǔ)句內(nèi)。 注意: 主函數(shù) ma
15、in 中定義的變量只在主函數(shù)中有效,主函數(shù)不能使用在其它函數(shù)中定義的變量。 不同函數(shù)中的同名變量互不影響,因?yàn)楦髯杂懈髯缘淖饔糜颉?形參也是局部變量。V1.0局部變量V1.000 #include<stdio.h>01 f1(int a)02 int b,c;03 在f1函數(shù)中a、b、c有效0405 f2(int a,int b)06 int c,d;在f2函數(shù)中 a、b、c、d有效07但與f1函數(shù)中的a、b、c不同0809void main()10 int m,n;11 在main函數(shù)中m、n有效12局部變量V1.000 #include<stdio.h>01 voi
16、dmain() 02int a,b; 03.04 int c05 c=a+b;a、b在此06c在此范圍范圍內(nèi)有效07內(nèi)有效0809.10全局變量 定義:在函數(shù)外部定義的變量稱(chēng)作全局變量(也稱(chēng)外部變量)。 作用域:可以文件中所有的函數(shù)公用。 注意:從定義變量的位置開(kāi)始到本文件結(jié)束,這段數(shù)可直接使用全局變量。的函如果在定義點(diǎn)之前的函數(shù)想使用全局變量,則應(yīng)該在該函數(shù)之前用關(guān)鍵字 extern 作。如果在同一源文件中,全局變量和局部變量同名,則在 局部作用范圍內(nèi),全局變量不起作用。V1.0全局變量 優(yōu)點(diǎn):同一文件中的一些函數(shù)都可以使用全局變量,這增加了函數(shù)間數(shù)據(jù)。當(dāng)某個(gè)函數(shù)改變了全局變量的值,其它函數(shù)
17、得到改變后的全局變量值。為函數(shù)增加了向外界傳遞數(shù)據(jù)的渠 道,如同多了返回值。 缺點(diǎn):全局 變量在程序的全部執(zhí)行過(guò)程中都占用單元。使用全局變量不符合程序設(shè)計(jì)中要求模塊間“強(qiáng)內(nèi)聚性、弱偶合性”的原則。會(huì)降低程序的可讀性和可維護(hù)性。V1.0變量的屬性及定義 C語(yǔ)言變量的屬性包括:數(shù)據(jù)類(lèi)型和 數(shù)據(jù)類(lèi)型:整型,實(shí)型,字符型類(lèi)型類(lèi)型:用來(lái)規(guī)定數(shù)據(jù)在內(nèi)存中的 auto (自動(dòng)的) register(寄存器的) static (靜態(tài)的) extern(外部的)分類(lèi),類(lèi)型包括 定義變量的一般形式:類(lèi)型 數(shù)據(jù)類(lèi)型 變量名如: auto int a; static int b; register int d;V1.
18、0靜態(tài)局部變量與靜態(tài)全局變量 static可用于修飾局部變量和全局變量靜態(tài)局部變量 定義: static修飾的局部變量稱(chēng)為靜態(tài)局部變量 作用域:僅限于定義它的函數(shù)內(nèi)部 注意: 存放在靜態(tài)區(qū),整個(gè)程序運(yùn)行期間都不。 編譯初值,每次調(diào)用時(shí)不再賦初值,只保留調(diào)用結(jié)束時(shí)變量的修改值。 如果靜態(tài)局部變量沒(méi)賦初值,編譯時(shí)自動(dòng)賦0。V1.0靜態(tài)局部變量與靜態(tài)全局變量靜態(tài)全局變量定義: static修飾的全局變量稱(chēng)為靜態(tài)全局變量作用域:只能在本文件中被使用,其他的源文件不能使用。注意: 存放在靜態(tài)區(qū),整個(gè)程序運(yùn)行期間都不。 如果靜態(tài)全局變量沒(méi)賦初值,編譯時(shí)自動(dòng)賦0。V1.0寄存器變量寄存器:它是CPU的組成部分,是用來(lái)暫時(shí)存放數(shù)據(jù)的裝置。寄存器變量:直接放置在CPU的寄存器中的變量稱(chēng)為寄存器變量。引入寄存器變量是為了提高“存取”速度。用register修飾的局部變量被稱(chēng)為寄存器變量 例如:register int i;i是寄存器變量,其數(shù)據(jù)類(lèi)型是整型。寄存器變量并不放在棧區(qū)中,而是放在寄存器中。寄存器變量的作用域僅限于函數(shù)內(nèi)或復(fù)合語(yǔ)句內(nèi)。注意: 只有局部變量(非靜態(tài)的)和形式參數(shù)可以作為寄存器變量。 由于計(jì)算機(jī)的寄存器數(shù)量有限,不宜定義太多寄存器變量。不同的計(jì)算機(jī)平臺(tái)使用的寄存器個(gè)數(shù)是不同的。V1.0靜態(tài)函數(shù)和全局函數(shù)靜態(tài)函數(shù) 定義:如果一個(gè)函數(shù)只能被本文件中其它函數(shù)調(diào)用,稱(chēng)為靜 態(tài)函數(shù)。 定
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 游艇俱樂(lè)部運(yùn)營(yíng)經(jīng)理崗位面試問(wèn)題及答案
- 箱包結(jié)構(gòu)設(shè)計(jì)師崗位面試問(wèn)題及答案
- 2025屆山西省忻州一中、臨汾一中、精英中學(xué)、鄂爾多斯一中高二下化學(xué)期末質(zhì)量跟蹤監(jiān)視試題含解析
- 湖北省襄陽(yáng)市重點(diǎn)中學(xué)2025年高二下化學(xué)期末復(fù)習(xí)檢測(cè)模擬試題含解析
- 醫(yī)藥研發(fā)激勵(lì)管理辦法
- 景區(qū)游客垃圾管理辦法
- 法人帳戶透支管理辦法
- 醫(yī)院集中采購(gòu)管理辦法
- 公司危機(jī)事件管理辦法
- 農(nóng)村集體經(jīng)濟(jì)發(fā)展的基本問(wèn)題研究
- 安全教育培訓(xùn):實(shí)現(xiàn)安全文明施工
- 2025年云南普洱市墨江天下一雙文旅體育集團(tuán)有限公司招聘筆試參考題庫(kù)附帶答案詳解
- GB/T 2423.102-2008電工電子產(chǎn)品環(huán)境試驗(yàn)第2部分:試驗(yàn)方法試驗(yàn):溫度(低溫、高溫)/低氣壓/振動(dòng)(正弦)綜合
- GB/T 18391.5-2009信息技術(shù)元數(shù)據(jù)注冊(cè)系統(tǒng)(MDR)第5部分:命名和標(biāo)識(shí)原則
- 第二季度護(hù)理紅黃警示及核心制度試題含答案
- 有機(jī)廢棄物資源化利用課件
- 住院患者身份確認(rèn)表
- 2023年度萬(wàn)科集團(tuán)合格供應(yīng)商名錄
- 水合肼項(xiàng)目安全評(píng)價(jià)報(bào)告
- 新版機(jī)動(dòng)車(chē)檢驗(yàn)檢測(cè)機(jī)構(gòu)程序文件模板
- GB∕T 1001.1-2021 標(biāo)稱(chēng)電壓高于1000V的架空線路絕緣子 第1部分:交流系統(tǒng)用瓷或玻璃絕緣子元件 定義、試驗(yàn)方法和判定準(zhǔn)則
評(píng)論
0/150
提交評(píng)論