C語言程序設(shè)計(jì)實(shí)例教程課件:函數(shù)_第1頁
C語言程序設(shè)計(jì)實(shí)例教程課件:函數(shù)_第2頁
C語言程序設(shè)計(jì)實(shí)例教程課件:函數(shù)_第3頁
C語言程序設(shè)計(jì)實(shí)例教程課件:函數(shù)_第4頁
C語言程序設(shè)計(jì)實(shí)例教程課件:函數(shù)_第5頁
已閱讀5頁,還剩47頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

函數(shù)函數(shù)概述4.1函數(shù)的定義與聲明4.2函數(shù)調(diào)用4.3函數(shù)返回類型與返回值4.4函數(shù)的參數(shù)4.5遞歸調(diào)用4.6變量作用域4.7變量存儲(chǔ)類別4.8內(nèi)部函數(shù)與外部函數(shù)4.9預(yù)處理命令4.104.1.1函數(shù)的概念在C語言程序設(shè)計(jì)中,具有特定功能的子模塊對(duì)應(yīng)為“函數(shù)”。函數(shù)是一個(gè)命名的程序段,負(fù)責(zé)完成特定的、相對(duì)獨(dú)立的動(dòng)作或計(jì)算。4.1.1函數(shù)的概念C語言提倡將一個(gè)較大的程序劃分成若干個(gè)子程序,對(duì)應(yīng)每一個(gè)子程序編制一個(gè)函數(shù),因此,C語言程序一般是由大量的小函數(shù)而不是由少量大函數(shù)構(gòu)成的,即所謂“小函數(shù)構(gòu)成大程序”。說明:一個(gè)C語言程序由一個(gè)或多個(gè)源程序文件組成,以文件為單位進(jìn)行編譯。一個(gè)源程序文件由一個(gè)或多個(gè)函數(shù)組成。C語言程序中必須包含一個(gè)并且僅包含一個(gè)以main()為名的函數(shù),這個(gè)函數(shù)稱為主函數(shù)。整個(gè)程序的執(zhí)行從主函數(shù)開始,當(dāng)主函數(shù)執(zhí)行完畢,則程序執(zhí)行結(jié)束。程序中所有函數(shù)都是平行的,即一個(gè)函數(shù)內(nèi)部不能嵌套定義另一個(gè)函數(shù),但函數(shù)之間可以嵌套調(diào)用。4.1.2函數(shù)分類在C語言中,從函數(shù)定義的角度看,函數(shù)可分為庫函數(shù)和用戶自定義函數(shù)兩種。(一)庫函數(shù)一組預(yù)先設(shè)計(jì)并編譯好的函數(shù)來實(shí)現(xiàn)各種通用或常用的功能,這些函數(shù)被組織在函數(shù)庫中,稱為庫函數(shù)。(二)用戶自定義函數(shù)用戶按需要自行編寫具有特定功能的函數(shù),稱為用戶自定義函數(shù)。4.1.2庫函數(shù)注意:類別不同的庫函數(shù)被包含在不同的頭文件中。頭文件是以“.h”為擴(kuò)展名的一類文件,如stdio.h、math.h等。當(dāng)需要使用某個(gè)庫函數(shù)時(shí),應(yīng)在程序開頭用#include預(yù)處理命令將對(duì)應(yīng)的頭文件包含進(jìn)來。#include<math.h>調(diào)用庫函數(shù)時(shí),應(yīng)遵循下面的格式:函數(shù)名(函數(shù)參數(shù))4.2.1函數(shù)的定義函數(shù)的定義形式如下:返回?cái)?shù)據(jù)類型函數(shù)名(形式參數(shù)類型形式參數(shù)名){ 語句}函數(shù)首部:

函數(shù)名:合法標(biāo)識(shí)符,用來唯一標(biāo)識(shí)該函數(shù)。一個(gè)程序中不允許出現(xiàn)同名的函數(shù)。

形式參數(shù)列表:用來說明形式參數(shù)的類型和名稱。

返回?cái)?shù)據(jù)類型:說明了函數(shù)返回值的數(shù)據(jù)類型。如果函數(shù)不需要返回值,可指定返回類型為void。如果沒有明確指明返回類型,則編譯器默認(rèn)返回類型為int類型。函數(shù)體:實(shí)際上是一個(gè)復(fù)合語句。花括號(hào)“{}”中包含了各種語句,函數(shù)的功能就是由執(zhí)行這些語句來實(shí)現(xiàn)的。4.2.1函數(shù)的定義從函數(shù)是否帶參數(shù)的角度來看,函數(shù)可分為無參函數(shù)和有參函數(shù)兩種。如果函數(shù)不帶參數(shù),則函數(shù)名后的圓括號(hào)中為空,但圓括號(hào)不可省略。如果帶多個(gè)參數(shù),則參數(shù)間用逗號(hào)間隔。4.2.1函數(shù)的定義【例4.1】編寫函數(shù)比較兩個(gè)數(shù)的大小(有參函數(shù))。f1oatmax(f1oata,f1oatb){f1oatm;m=a>b?a:b;return(m);}4.2.1函數(shù)的定義【例4.2】編寫函數(shù)計(jì)算兩個(gè)數(shù)的和(無參函數(shù))。voidadd(){f1oata,b,sum;scanf(“%f%f”,&a,&b);sum=a+b;printf(“sumis%6.2f\n”,sum);}4.2.1函數(shù)的定義在函數(shù)定義中還應(yīng)注意以下幾個(gè)問題:不論函數(shù)的形式參數(shù)類型是否相同,必須分別說明參數(shù)類型。如:(floata,floatb)不能寫成(floata,b)函數(shù)的定義不允許嵌套。也就是說不允許在一個(gè)函數(shù)體內(nèi)再定義一個(gè)函數(shù)。下列寫法是錯(cuò)誤的:intf1(intx,inty){inta,b;…intf2(intm){…}…}在函數(shù)體中也應(yīng)將變量的聲明放在使用該變量之前,否則會(huì)出現(xiàn)編譯錯(cuò)誤。4.2.2函數(shù)聲明與函數(shù)原型(一)函數(shù)聲明形式如下:返回?cái)?shù)據(jù)類型函數(shù)名(形式參數(shù)類型形式參數(shù)名);如floatmax1(floata,floatb);注意:當(dāng)被調(diào)函數(shù)的定義位于主調(diào)函數(shù)之前,可以省略函數(shù)聲明;若定義在后,則必須在主調(diào)函數(shù)之前對(duì)被調(diào)函數(shù)進(jìn)行聲明。對(duì)于有參函數(shù),在聲明時(shí)可以省略形式參數(shù)的名稱,但類型不能省略。如floatmax1(float,float);函數(shù)聲明時(shí)不要忘記語句末尾的分號(hào)“;”。4.2.2函數(shù)聲明與函數(shù)原型(二)函數(shù)原型形式如下:返回?cái)?shù)據(jù)類型函數(shù)名(形參類型形參名);返回?cái)?shù)據(jù)類型函數(shù)名(形參類型); 在程序中,提倡先聲明函數(shù),再使用函數(shù)。函數(shù)原型符合聲明函數(shù)的形式,所以通常使用函數(shù)原型來聲明函數(shù),以便編譯器對(duì)函數(shù)調(diào)用的合法性進(jìn)行全面的檢查。4.3函數(shù)調(diào)用1.函數(shù)調(diào)用一般形式函數(shù)名(實(shí)際參數(shù)列表);

函數(shù)名可以是系統(tǒng)預(yù)定義的庫函數(shù)名或者是用戶自定義函數(shù)的名字。實(shí)際參數(shù)列表提供了函數(shù)調(diào)用時(shí)所需的數(shù)據(jù)信息。實(shí)際參數(shù)又稱為實(shí)參,可以是常量、變量或者表達(dá)式。多個(gè)實(shí)參之間用逗號(hào)間隔。如果調(diào)用函數(shù)為無參函數(shù),則實(shí)參列表為空,但圓括號(hào)不能省略。4.3函數(shù)調(diào)用2.函數(shù)調(diào)用方式函數(shù)語句:將函數(shù)調(diào)用作為一個(gè)獨(dú)立的語句。如

printf("Hello,C!");函數(shù)表達(dá)式:函數(shù)出現(xiàn)在一個(gè)表達(dá)式之中。此時(shí)要求函數(shù)返回一個(gè)確定的值以參加表達(dá)式的運(yùn)算。如:

doublez,a; z=a+sqrt(100);函數(shù)參數(shù):函數(shù)調(diào)用作為另一個(gè)函數(shù)的實(shí)參。如:

floatm,a,b,c; m=max1(a,max1(b,c));4.3函數(shù)調(diào)用3.函數(shù)調(diào)用過程一個(gè)C程序可以包含多個(gè)函數(shù),但必須包含且只能包含一個(gè)main()函數(shù)。程序的執(zhí)行從main()函數(shù)開始,到main()函數(shù)結(jié)束。程序中的其它函數(shù)必須通過main()函數(shù)直接或者間接地調(diào)用才能執(zhí)行。【例4.3】比較兩個(gè)數(shù)的大小,輸出較大值。當(dāng)輸入4.5,7.9,程序運(yùn)行結(jié)果如圖所示:4.3函數(shù)調(diào)用3.函數(shù)調(diào)用過程

執(zhí)行過程如圖所示:x→ay→bmain(){

…輸入x,yz=max1(x,y);輸出z}floatmax1(floata,floatb){…return(m);}m4.3函數(shù)調(diào)用4.函數(shù)嵌套調(diào)用

C語言中,函數(shù)之間都是平行的,可以在一個(gè)函數(shù)中調(diào)用另一個(gè)函數(shù)。當(dāng)被調(diào)函數(shù)的定義中又包含了對(duì)第三個(gè)函數(shù)的調(diào)用,這就構(gòu)成了函數(shù)的嵌套調(diào)用。main函數(shù)a()函數(shù)b()函數(shù)調(diào)用a()函數(shù)調(diào)用b()函數(shù)結(jié)束⑤②③④⑥⑦⑧4.3函數(shù)調(diào)用【例4.4】編寫函數(shù)求兩個(gè)正整數(shù)的最大公約數(shù)和最小公倍數(shù)。分析:定義兩個(gè)函數(shù)gcd和lcm。函數(shù)gcd功能是求a,b的最大公約數(shù),函數(shù)lcm功能是求a,b的最小公倍數(shù)。注意:C語言允許函數(shù)嵌套調(diào)用,但是不允許函數(shù)嵌套定義。當(dāng)輸入12,42,運(yùn)行結(jié)果如圖所示:4.4函數(shù)返回類型與返回值

函數(shù)的返回類型:在函數(shù)定義時(shí)函數(shù)首部指定的類型。函數(shù)的返回值:指函數(shù)被調(diào)用時(shí),執(zhí)行函數(shù)體中的程序段后所取得的并返回給主調(diào)函數(shù)的值。函數(shù)分為有返回值函數(shù)和無返回值函數(shù)兩類。4.4函數(shù)返回類型與返回值1.有返回值函數(shù)如果函數(shù)有返回值,則函數(shù)體中必須包含return語句,通過return語句將值返回給主調(diào)函數(shù)。使用return語句的一般形式為:

return表達(dá)式;或

return(表達(dá)式);該語句的功能是計(jì)算表達(dá)式的值,并返回給主調(diào)函數(shù)。4.4函數(shù)返回類型與返回值1.有返回值函數(shù)當(dāng)一個(gè)函數(shù)有返回值時(shí),必須在函數(shù)定義時(shí)指定函數(shù)的返回類型。如果省略函數(shù)的返回類型,則系統(tǒng)默認(rèn)函數(shù)返回類型為int型。函數(shù)返回類型應(yīng)該和return語句中表達(dá)式值的類型一致。如果兩者不一致時(shí),則返回類型以函數(shù)返回類型為準(zhǔn)。【例4.5】函數(shù)返回類型與return表達(dá)式值類型不一致。4.4函數(shù)返回類型與返回值2.無返回值函數(shù)如果函數(shù)沒有返回值,則定義為“空”類型,類型說明符為“void”。無返回值函數(shù)用于完成特定的處理任務(wù),執(zhí)行完后不向主調(diào)函數(shù)返回任何值。如

voidprintstar() { printf("********"); }

如果要在主調(diào)函數(shù)中調(diào)用printstar函數(shù),則語句為:

printstar();

當(dāng)函數(shù)聲明為void型,則函數(shù)體中不應(yīng)出現(xiàn)return語句或者return語句后面不帶任何表達(dá)式。4.5函數(shù)的參數(shù)形式參數(shù)與實(shí)際參數(shù)在定義一個(gè)有參函數(shù)時(shí),函數(shù)名后面圓括號(hào)“()”中的參數(shù)稱為形式參數(shù),簡(jiǎn)稱形參。形參在定義時(shí)必須指明它的個(gè)數(shù),類型和名字。在調(diào)用一個(gè)有參函數(shù)時(shí),函數(shù)名后面圓括號(hào)“()”中的參數(shù)稱為實(shí)際參數(shù),簡(jiǎn)稱實(shí)參。實(shí)參可以是常量、變量、表達(dá)式、函數(shù)等。在進(jìn)行函數(shù)調(diào)用時(shí),實(shí)參必須具有確定的值,以便將這些值傳送給形參。注意:在函數(shù)調(diào)用時(shí),實(shí)參的值應(yīng)一一對(duì)應(yīng)地傳遞給形參,實(shí)參與形參的個(gè)數(shù)應(yīng)相同,類型應(yīng)一致。形參只有在被調(diào)用時(shí)才分配內(nèi)存單元,在調(diào)用結(jié)束時(shí),即刻釋放所分配的內(nèi)存單元。因此,形參只有在函數(shù)內(nèi)部有效。函數(shù)調(diào)用結(jié)束返回主調(diào)函數(shù)后,不能再使用該形參。4.5函數(shù)的參數(shù)值傳遞指根據(jù)實(shí)參和形參的對(duì)應(yīng)關(guān)系,將實(shí)參的值單向地傳遞給形參,供被調(diào)函數(shù)在執(zhí)行時(shí)使用。在函數(shù)執(zhí)行過程中,對(duì)形參做任何修改都不影響實(shí)參的值。定義函數(shù)func()intfunc(intx,inty){y=x+y;return(y);}在main()函數(shù)中執(zhí)行賦值語句m=func(a,b);假設(shè)主函數(shù)中a=3,b=4,如圖main funca xb y調(diào)用函數(shù)時(shí)3434main funca xb y調(diào)用結(jié)束34374.5函數(shù)的參數(shù)值傳遞【例4.6】從m個(gè)不同元素中取出n(n≤m)個(gè)元素的所有組合的個(gè)數(shù),叫做從m個(gè)不同元素中取出n個(gè)元素的組合數(shù)。求組合數(shù):C(m,n)=。分析:定義一個(gè)求n!的函數(shù)fac,主函數(shù)中三次調(diào)用fac函數(shù)實(shí)現(xiàn)求組合數(shù)。當(dāng)輸入6,2,運(yùn)行結(jié)果如圖所示:m!n!*(m-n)!4.6遞歸調(diào)用如果一個(gè)函數(shù)在調(diào)用的過程中出現(xiàn)直接或者間接地調(diào)用該函數(shù)本身,稱為函數(shù)的遞歸調(diào)用。C語言的特點(diǎn)之一就是允許使用函數(shù)的遞歸調(diào)用。

intfn(inta) {intx,y; … y=fn(x); return(3*y); }在調(diào)用函數(shù)fn()的過程中,又出現(xiàn)再次調(diào)用fn()函數(shù),這就是函數(shù)的遞歸調(diào)用,函數(shù)fn()稱為遞歸函數(shù)。像函數(shù)fn()這樣直接調(diào)用自身的,稱為函數(shù)的直接遞歸調(diào)用。4.6遞歸調(diào)用如果調(diào)用f1()函數(shù)的過程中要調(diào)用f2()函數(shù),而在調(diào)用f2()函數(shù)的過程中又要調(diào)用f1()函數(shù),則稱為函數(shù)的間接遞歸調(diào)用。fn函數(shù)調(diào)用fn函數(shù)a.直接遞歸調(diào)用b.間接遞歸調(diào)用f1函數(shù)調(diào)用f2函數(shù)f2函數(shù)調(diào)用f1函數(shù)4.6遞歸調(diào)用問題:求自然數(shù)n的階乘。用遞歸方法求n!,對(duì)應(yīng)的遞歸公式為:

n!=1 (n=0,1) n!=n×(n-1)!(n>1)以5!為例,遞歸過程是這樣的: 因?yàn)?!=5×4!,所以要求出5!,就必須先求出4!,而4!=4×3!,所以要求出4!,就必須先求出3!,同理,要求出3!,就必須先求出2!,要求出2!,就必須先求出1!,而根據(jù)遞歸公式可知,1!=1,從而,再反過來就可以依次求出2!,3!,4!,5!。注意:在遞歸過程中,必須給定遞歸結(jié)束條件,否則,遞歸過程會(huì)無限制地進(jìn)行下去。4.6遞歸調(diào)用【例4.8】用遞歸法求正整數(shù)n!。回歸5!=5×4!4!=4×3!3!=3×2!2!=2×1!1!=12!=2×1=23!=3×2=64!=4×6=245!=5×24=120遞推4.6遞歸調(diào)用【例4.9】用遞歸法計(jì)算Fibonacci(斐波拉契)數(shù)列的第n項(xiàng)。分析:Fibonacci數(shù)列的遞歸公式如下:

f1=1 (n=1) f2=1 (n=2) fn=fn-1+fn-2 (n>=3)

從Fibonacci數(shù)列的遞歸公式,可以很清楚地確定遞歸結(jié)束條件:當(dāng)n=1或2時(shí),數(shù)列值為1;當(dāng)n>=3時(shí),遞推方式為fn等于前兩項(xiàng)之和。4.7變量作用域

變量的作用域是指一個(gè)變量在程序中可以被使用的范圍。1.內(nèi)部變量也稱局部變量。在一個(gè)函數(shù)內(nèi)部定義的變量就是內(nèi)部變量,它的作用范圍是從變量定義的位置開始到函數(shù)體結(jié)束的位置。內(nèi)部變量只在本函數(shù)中有效,在函數(shù)之外不允許使用。由于函數(shù)的形參也是在函數(shù)中定義的,因此形參也屬于內(nèi)部變量。

【例4.10】?jī)?nèi)部變量及其作用域。4.7變量作用域2.外部變量也稱為全局變量。它是在函數(shù)外部定義的變量,它不屬于任何一個(gè)函數(shù),它屬于一個(gè)源程序文件。外部變量的作用域是從變量定義的位置開始到源文件結(jié)束。當(dāng)外部變量的定義出現(xiàn)在函數(shù)定義之前,則函數(shù)中可以直接使用該外部變量,而如果外部變量的定義在函數(shù)定義之后,則必須先聲明該外部變量,然后才能在函數(shù)中使用。

外部變量的聲明方法為:

extern類型名外部變量名;【例4.11】外部變量及其作用域。4.7變量作用域3.作用域規(guī)則在同一個(gè)作用域內(nèi)不允許出現(xiàn)同名變量的定義。相互獨(dú)立的兩個(gè)作用域內(nèi)的同名變量分配不同的存儲(chǔ)單元,代表不同的變量,互不影響。如果在一個(gè)作用域和其所包含的子作用域內(nèi)出現(xiàn)同名變量,則在子作用域中,內(nèi)層變量有效,外層變量被屏蔽。4.8變量存儲(chǔ)類別C語言中,變量的屬性有兩種:數(shù)據(jù)類型和存儲(chǔ)類別。數(shù)據(jù)類型描述的是數(shù)據(jù)的存儲(chǔ)格式和運(yùn)算規(guī)則,存儲(chǔ)類別則描述了數(shù)據(jù)的作用域和生存期。變量生存期 指在程序執(zhí)行過程中,變量何時(shí)被分配存儲(chǔ)空間,何時(shí)被回收空間。 相對(duì)于變量的作用域描述的是變量的使用范圍,生存期則描述的是當(dāng)程序執(zhí)行時(shí)變量的存在時(shí)間。4.8變量存儲(chǔ)類別C語言變量的存儲(chǔ)類別可以分為:自動(dòng)變量(auto)、靜態(tài)變量(static)、寄存器變量(register)、外部變量(extern)。在對(duì)變量進(jìn)行聲明時(shí),除了應(yīng)說明變量的數(shù)據(jù)類型,還應(yīng)說明其存儲(chǔ)類別。定義變量的格式為:

存儲(chǔ)類別數(shù)據(jù)類型變量名;4.8變量存儲(chǔ)類別2.auto變量 又稱為自動(dòng)變量,屬于動(dòng)態(tài)存儲(chǔ)類別。函數(shù)中定義的內(nèi)部變量、形參和復(fù)合語句中定義的變量都屬于自動(dòng)變量。如:

auto

inti=1;由于內(nèi)部變量的默認(rèn)存儲(chǔ)類別為auto,因此關(guān)鍵字auto可以省略。4.8變量存儲(chǔ)類別3.static變量 又稱為靜態(tài)變量,屬于靜態(tài)存儲(chǔ)類別。當(dāng)希望函數(shù)中的內(nèi)部變量在函數(shù)調(diào)用結(jié)束后依然存在,并在下一次調(diào)用函數(shù)時(shí),該變量仍然保留上一次函數(shù)調(diào)用結(jié)束時(shí)的值,則可以將該變量的存儲(chǔ)類別聲明為static。

若初始化時(shí)static變量未被賦初值,則自動(dòng)賦值為0(數(shù)值型)或空字符(字符型)。

4.8變量存儲(chǔ)類別4.register變量

又稱為寄存器變量,它是存放在CPU的通用寄存器之中。當(dāng)某個(gè)變量在函數(shù)中可能會(huì)參與大量頻繁的計(jì)算時(shí),為了提高程序的執(zhí)行效率,消除從內(nèi)存向寄存器裝入變量和將結(jié)果返回內(nèi)存中的重復(fù)開銷,可以將該變量聲明為register。寄存器變量只能是函數(shù)中的內(nèi)部變量和形式參數(shù)。4.8變量存儲(chǔ)類別5.extern變量

就是外部變量,也稱為全局變量,它是在函數(shù)外部定義的變量,它不屬于任何一個(gè)函數(shù),它屬于一個(gè)源程序文件。外部變量屬于靜態(tài)存儲(chǔ)類別。當(dāng)程序被編譯時(shí),就為外部變量分配存儲(chǔ)單元,并初始化賦值。整個(gè)程序運(yùn)行期間,外部變量一直占用存儲(chǔ)單元。當(dāng)程序運(yùn)行結(jié)束時(shí),外部變量占用的存儲(chǔ)單元才會(huì)被釋放。因此,外部變量和程序具有相同的的生存期。若初始化時(shí)extern變量未被賦初值,則自動(dòng)賦值為0。4.9內(nèi)部函數(shù)與外部函數(shù)內(nèi)部函數(shù)如果一個(gè)函數(shù)只能被本文件中的其它函數(shù)調(diào)用,則將該函數(shù)稱為內(nèi)部函數(shù)。內(nèi)部函數(shù)的作用域只在本文件內(nèi),同一個(gè)程序中的其它源文件不允許調(diào)用該內(nèi)部函數(shù)。定義方法為:

static函數(shù)返回類型函數(shù)名(形參列表)

{

函數(shù)體;

}4.9內(nèi)部函數(shù)與外部函數(shù)外部函數(shù)外部函數(shù)是在程序中某個(gè)文件中定義的函數(shù),在程序的其它文件中都可以使用。外部函數(shù)的作用域是整個(gè)源程序。外部函數(shù)的定義方法為:extern函數(shù)返回類型函數(shù)名(形參列表){

函數(shù)體;}C語言規(guī)定,凡是定義時(shí)未加存儲(chǔ)類別說明的函數(shù)都是外部函數(shù)。4.10預(yù)處理預(yù)處理命令是以“#”開頭的一系列命令。在源程序中,這些命令都放在函數(shù)之外,而且一般都放在源文件的開頭。當(dāng)對(duì)一個(gè)源文件進(jìn)行編譯時(shí),系統(tǒng)首先引用預(yù)處理程序?qū)υ闯绦蛑械念A(yù)處理命令作處理,處理完畢后,然后才開始對(duì)源程序進(jìn)行正式地編譯(詞法掃描和語法分析),生成目標(biāo)代碼。C語言提供了多種預(yù)處理功能,包括文件包含、宏定義、條件編譯等。4.10預(yù)處理文件包含將指定文件的內(nèi)容插入到本文件中來,從而將指定文件和當(dāng)前的源程序文件連接成一個(gè)源文件。文件包含命令有以下兩種形式:

#include<文件名> #include"文件名"

通常,上面兩種形式的作用是一樣的,但是在查找被包含文件的路徑時(shí),使用尖括號(hào)表示直接到編譯器指定的標(biāo)準(zhǔn)庫頭文件目錄中去查找,不查找源文件所在目錄;使用雙引號(hào)則表示首先在當(dāng)前被編譯的源文件所在目錄中查找,若未找到,再到編譯器指定的標(biāo)準(zhǔn)庫頭文件目錄中去查找。#include<stdio.h>#include"math.h"4.10預(yù)處理宏定義在C語言中,允許用一個(gè)標(biāo)識(shí)符來表示一個(gè)字符串,稱為宏定義。被定義的標(biāo)識(shí)符稱為宏名,指定的字符串稱為宏體。在編譯前預(yù)處理時(shí),程序中所有出現(xiàn)宏名的地方都會(huì)用宏體字符串去替換,這稱為“宏代換”或者“宏展開”。不帶參宏定義:

#define標(biāo)識(shí)符字符串這里,define是宏定義的關(guān)鍵字,標(biāo)識(shí)符是被定義的宏名,字符串為常量或表達(dá)式。如

#definePI3.14159265//PI也稱符號(hào)常量4.10預(yù)處理帶參宏定義:C語言允許宏帶有參數(shù)。在宏定義中的參數(shù)稱為形式參數(shù),在宏調(diào)用中的參數(shù)稱為實(shí)際參數(shù)。對(duì)帶有參數(shù)的宏,預(yù)處理時(shí),先用實(shí)參替代形參字符串,再將宏展開。#define宏名(形參表)字符串這里,宏名是標(biāo)識(shí)符,形參表中包含一個(gè)或多個(gè)參數(shù),參數(shù)間用逗號(hào)分隔。字符串可以由表達(dá)式或語句組成,其中包含形參表中指定的參數(shù)。4.10預(yù)處理帶參宏定義:帶參宏調(diào)用的一般形式為:宏名(實(shí)參表)實(shí)參可以是常量、變量或表達(dá)式。宏定義:

#defineMUL(x,y)((x)*(

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論