版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第九章函數(shù)本章學(xué)習(xí)內(nèi)容本章首先總括的說明了C語言的函數(shù)與程序結(jié)構(gòu)。然后介紹了函數(shù)的定義、函數(shù)的參數(shù)、函數(shù)的返回值、函數(shù)的調(diào)用、函數(shù)的嵌套調(diào)用和函數(shù)的遞歸調(diào)用。還介紹了數(shù)組作為函數(shù)的參數(shù)。介紹了局部變量與全局變量以及變量的存儲類別。通過一個具體的多源文件程序的例子說明了工程文件的創(chuàng)建和生成可執(zhí)行文件的方法。最后介紹了編譯預(yù)處理的有關(guān)知識。本章學(xué)習(xí)目的
掌握函數(shù)的定義和調(diào)用方法,使學(xué)生進(jìn)一步掌握結(jié)構(gòu)化程序設(shè)計(jì)的方法。了解形式參數(shù)、實(shí)際參數(shù)、傳值和傳地址的基本概念。能設(shè)計(jì)具有自定義函數(shù)的程序,包括函數(shù)的嵌套調(diào)用以及函數(shù)的遞歸調(diào)用的程序。掌握變量的作用域和變量的生存期,掌握編譯預(yù)處理的有關(guān)知識。
本章學(xué)習(xí)重點(diǎn)和難點(diǎn)重點(diǎn):1.函數(shù)的定義。2.主調(diào)函數(shù)與被調(diào)函數(shù)之間參數(shù)的傳遞。難點(diǎn):函數(shù)的遞歸調(diào)用。第九章函數(shù)9.1概述9.2
函數(shù)定義的一般形式9.3函數(shù)參數(shù)和函數(shù)的值9.4
函數(shù)的調(diào)用9.5
函數(shù)的嵌套調(diào)用9.6
函數(shù)的遞歸調(diào)用9.7數(shù)組作為函數(shù)的參數(shù)9.8局部變量和全局變量9.9變量的的存儲類別9.10工程文件9.11
編譯預(yù)處理9.1概述一個C程序可由一個主函數(shù)和若干個函數(shù)構(gòu)成。由主函數(shù)調(diào)用其他函數(shù),其他函數(shù)也可以互相調(diào)用。同一個函數(shù)可以被一個或多個函數(shù)調(diào)用任意多次。
9.1概述
在程序設(shè)計(jì)中,常常將一些常用的功能模塊編寫成函數(shù),放在函數(shù)庫中供選用。從而減少程序段的重復(fù)編寫。
9.1概述例1函數(shù)printstar()的功能為打印一行*號,函數(shù)print_message()的功能為打印HappyNewYear!,按下列格式在屏幕上輸出:**********************
HappyNewYear!**********************9.1概述說明:(1)一個源程序文件由一個或多個函數(shù)組成。一個源程序文件是一個編譯單位,即以源程序?yàn)閱挝贿M(jìn)行編譯,而不是以函數(shù)為單位進(jìn)行編譯。
(2)一個C程序由一個或多個源程序文件組成。對于較大的程序,一般不希望全部放在一個文件中,而將函數(shù)和其他內(nèi)容分別放在若干個源文件中,再由若干個源文件組成一個C程序。這樣可以分別編寫、分別編譯,提高工作效率。一個源文件可以為多個C程序公用。9.1概述(3)C程序的執(zhí)行從main函數(shù)開始,條用其他函數(shù)后流程返回到main函數(shù),在main函數(shù)中結(jié)束整個程序的運(yùn)行。main函數(shù)是系統(tǒng)定義的。
(4)所有函數(shù)都是平行的,即在定義函數(shù)時是互相獨(dú)立的,一個函數(shù)名不從屬另一函數(shù),即函數(shù)不能嵌套定義。函數(shù)間可以互相調(diào)用,但是不能調(diào)用main函數(shù)。
9.1概述(5)從用戶使用的角度看,函數(shù)可分為兩類:①標(biāo)準(zhǔn)函數(shù),即庫函數(shù)。這是由系統(tǒng)定義的,用戶可以直接使用,但在使用前要將相應(yīng)的頭文件包含到程序中去。②用戶自己定義的函數(shù)。用以解決用戶專門的需要。
9.1概述(6)從函數(shù)的形式看,函數(shù)可分為兩類:①無參函數(shù)。例1中的printstar和print_message函數(shù)就是無參函數(shù)。②有參函數(shù)。在調(diào)用函數(shù)時,在主調(diào)函數(shù)和被調(diào)函數(shù)之間有數(shù)據(jù)的傳遞。也就是說,主調(diào)函數(shù)可以將數(shù)據(jù)傳給被調(diào)函數(shù)使用,被調(diào)用函數(shù)中的數(shù)據(jù)也可以帶回來供主調(diào)函數(shù)使用。9.2
函數(shù)定義的一般形式1.無參函數(shù)的定義形式類型標(biāo)識符
函數(shù)名(){聲明部分
語句}
例1中的printstar和print_message函數(shù)就是無參函數(shù)。
9.2
函數(shù)定義的一般形式2.有參函數(shù)定義的一般形式類型標(biāo)識符
函數(shù)名(形式參數(shù)列表){聲明部分
語句}
9.2
函數(shù)定義的一般形式3.可以有“空函數(shù)”形式:類型標(biāo)識符
函數(shù)名(){}例如:dummy(){}
9.2
函數(shù)定義的一般形式例1求出2個任意整數(shù)中的最大數(shù),并輸出。/*求兩個任意整數(shù)中的最大值*//*現(xiàn)代形式參數(shù)說明方式*/main(){inta,b,c;printf("請輸入a,b:");scanf("%d,%d",&a,&b);c=max(a,b);printf("Maxis:%d\n",c);}intmax(intx,inty)/*定義有參函數(shù)max*/{intz;/*函數(shù)中的說明部分*/
z=x>y?x:y;return(z);}
9.2
函數(shù)定義的一般形式
例2編寫學(xué)生成績管理系統(tǒng)菜單程序。
9.2
函數(shù)定義的一般形式
4.對形參聲明的傳統(tǒng)方式/*求兩個任意整數(shù)中的最大值*//*傳統(tǒng)形式參數(shù)說明方式*/main(){inta,b,c;printf("請輸入a,b:");scanf("%d,%d",&a,&b);c=max(a,b);printf("Maxis:%d\n",c);}
intmax(x,y)/*指定參數(shù)x,y*/intx,y;/*對參數(shù)進(jìn)行類型說明*/{intz;z=x>y?x:y;return(z);}9.2
函數(shù)定義的一般形式
一般把這種方法稱為傳統(tǒng)的對形式參數(shù)的聲明方式,而把前面介紹的方法稱為現(xiàn)代的方式。TurboC和目前使用的多數(shù)C版本對這兩種方法都允許使用,兩種方法等價,ANSI新標(biāo)準(zhǔn)推薦前一種方法即現(xiàn)代方式。9.3函數(shù)參數(shù)和函數(shù)的值9.3.1
形式參數(shù)和實(shí)際參數(shù)9.3.2
函數(shù)的返回值
9.3.1形式參數(shù)和實(shí)際參數(shù)形式參數(shù)——在定義函數(shù)時函數(shù)名后面圓括弧中的變量名稱為形式參數(shù),簡稱為形參。實(shí)際參數(shù)——在主調(diào)函數(shù)中調(diào)用一個函數(shù)時,函數(shù)名后面圓括弧中的參數(shù)稱為實(shí)際參數(shù),簡稱為實(shí)參。9.3.1形式參數(shù)和實(shí)際參數(shù)例1
調(diào)用函數(shù)時的數(shù)據(jù)傳遞。9.3.1形式參數(shù)和實(shí)際參數(shù)
關(guān)于形參和實(shí)參的說明:
(1)在定義函數(shù)中指定的形參,在未出現(xiàn)函數(shù)調(diào)用時,它們并不占內(nèi)存中的存儲單元。只有在發(fā)生函數(shù)調(diào)用時,函數(shù)中的形參才由系統(tǒng)分配內(nèi)存單元。在調(diào)用結(jié)束后,形參所占的內(nèi)存單元也被釋放。9.3.1形式參數(shù)和實(shí)際參數(shù)
(2)實(shí)參可以是常量、變量或表達(dá)式。但要求它們有確定的值,在調(diào)用時將實(shí)參的值賦給形參(如果是數(shù)組名,則傳遞的是數(shù)組首地址而不是數(shù)組的值)。例如:max(3,a+b);9.3.1形式參數(shù)和實(shí)際參數(shù)
(3)在被定義的函數(shù)中,必須指定形參的類型。9.3.1形式參數(shù)和實(shí)際參數(shù)
(4)實(shí)際參數(shù)與實(shí)際參數(shù)的類型應(yīng)性同或賦值兼容。如果實(shí)際參數(shù)為整型而形式參數(shù)為實(shí)型,或者相反,則按照前面介紹的不同類型數(shù)據(jù)的賦值規(guī)則進(jìn)行轉(zhuǎn)換。例如,實(shí)際參數(shù)值a為3.5,而形式參數(shù)x為整型,則將實(shí)數(shù)3.5轉(zhuǎn)換成整型數(shù)3,然后送到形式參數(shù)b。但此時應(yīng)將max函數(shù)放在main函數(shù)的前面或在main函數(shù)中對被調(diào)用函數(shù)max作原型聲明,否則會出錯。9.3.1形式參數(shù)和實(shí)際參數(shù)
(5)C語言規(guī)定,實(shí)參變量對形參變量的數(shù)據(jù)傳遞是“值傳遞”,即單向傳遞,只由實(shí)參傳給形參,而不能由形參傳回來給實(shí)參。9.3.1形式參數(shù)和實(shí)際參數(shù)例2交換兩個變量的值。注意:C語言中,由于參數(shù)傳遞是單向的,所以這是一個錯誤的程序。
9.3.1形式參數(shù)和實(shí)際參數(shù)
例3分析下列程序。main(){intx=2,y=3,z=0;printf("*x=%d,y=%d,z=%d\n",x,y,z);try(x,y,z);/*函數(shù)調(diào)用,x,y,z為實(shí)參*/
printf("****x=%d,y=%d,z=%d\n",x,y,z);}
try(intx,inty,intz){printf("**x=%d,y=%d,z=%d\n",x,y,z);
z=x+y;x=x*x;y=y*y;printf("***x=%d,y=%d,z=%d\n",x,y,z);}9.3.2
函數(shù)的返回值說明:(1)函數(shù)的返回值是通過函數(shù)中的return語句獲得的。return語句將被調(diào)用函數(shù)中的一個確定值帶回主調(diào)函數(shù)中去。9.3.2
函數(shù)的返回值
例4已知x,求y的值。
2x2-xx≥0y=2x2x<09.3.2
函數(shù)的返回值(2)函數(shù)值的類型。既然函數(shù)有返回值,這個值當(dāng)然應(yīng)屬于某一個確定的類型,應(yīng)當(dāng)在定義函數(shù)時指定函數(shù)值的類型。例如:
intmax(intx,inty)
C語言規(guī)定,凡不加類型說明的函數(shù),一律自動按整型處理。9.3.2
函數(shù)的返回值(3)如果函數(shù)值的類型和return語句中表達(dá)式的值不一致,則以函數(shù)類型為準(zhǔn)。對數(shù)值型數(shù)據(jù),可以自動進(jìn)行類型轉(zhuǎn)換。即函數(shù)類型決定返回值的類型。9.3.2
函數(shù)的返回值(4)如果被調(diào)用函數(shù)中沒有return語句,并不帶回一個切頂?shù)?、用戶所希望得到的函?shù)值,但實(shí)際上,函數(shù)并不是不帶回值,而只是不帶回有用的值,帶回的是一個不確定的值。
(5)為了明確表示“不帶回值”,可以用“void”定義無類型(或稱為空類型)。9.3.2
函數(shù)的返回值例6將前面打印程序中的printstar()和print_message()函數(shù)定義成為無類型函數(shù)。
9.4
函數(shù)的調(diào)用9.4.1
函數(shù)調(diào)用的一般形式9.4.2
函數(shù)調(diào)用的方式9.4.3對被調(diào)用函數(shù)的聲明和函數(shù)原型9.4.1
函數(shù)調(diào)用的一般形式函數(shù)調(diào)用的一般形式:
函數(shù)名(<實(shí)際參數(shù)列表>);
9.4.1
函數(shù)調(diào)用的一般形式說明:(1)如果是調(diào)用無參函數(shù),則<實(shí)際參數(shù)列表>可以省略,但是括號不能省。(2)如果實(shí)際參數(shù)列表中包括多個實(shí)際參數(shù),則個參數(shù)之間用逗號隔開。(3)實(shí)際參數(shù)與形式參數(shù)的個數(shù)應(yīng)相等,類型應(yīng)一致。實(shí)際參數(shù)與形式參數(shù)按順序?qū)?yīng),一一傳遞。
9.4.1
函數(shù)調(diào)用的一般形式(4)如果實(shí)際參數(shù)列表中包括多個參數(shù),對實(shí)際參數(shù)求值的順序接頂于編譯系統(tǒng)。有的系統(tǒng)按自左至右,有的系統(tǒng)則按自右至左的順序。例如TurboC和MSC是按自右至左的順序求值的。9.4.2
函數(shù)調(diào)用的方式1.函數(shù)語句main(){printstar();/*調(diào)用printstar函數(shù)*/
print_message();/*調(diào)用print_message函數(shù)*/
printstar();/*調(diào)用printstar函數(shù)*/}9.4.2
函數(shù)調(diào)用的方式
2.函數(shù)表達(dá)式函數(shù)出現(xiàn)在一個表達(dá)式中,這種表達(dá)式稱為函數(shù)表達(dá)式。這時要求函數(shù)帶回一個確定的函數(shù)值參加表達(dá)式的運(yùn)算。例如:
c=2*max(a,b);9.4.2
函數(shù)調(diào)用的方式3.函數(shù)參數(shù)函數(shù)調(diào)用作為一個函數(shù)的參數(shù)。例如:printf(“%d”,max(a,b));
9.4.3對被調(diào)用函數(shù)的聲明和函數(shù)原型被調(diào)用函數(shù)應(yīng)具備的條件:(1)被調(diào)用函數(shù)必須似乎已經(jīng)存在的函數(shù),可以是庫函數(shù)或用戶自定義函數(shù)。(2)如果使用庫函數(shù),必須在文件開頭使用#include命令將調(diào)用有關(guān)庫函數(shù)的所有需要的信息包含到本文件中來。9.4.3對被調(diào)用函數(shù)的聲明和函數(shù)原型(3)如果使用用戶自定義函數(shù),而且該函數(shù)與調(diào)用它的函數(shù)在用一個文件中,一般還應(yīng)在主調(diào)用函數(shù)中對被調(diào)用的函數(shù)作聲明。
聲明——向編譯系統(tǒng)聲明將要調(diào)用的函數(shù),并將有關(guān)信息通知編譯系統(tǒng)。
9.4.3對被調(diào)用函數(shù)的聲明和函數(shù)原型
以上函數(shù)聲明稱為——函數(shù)原型。使用函數(shù)原型的作用主要是利用它在程序的編譯階段對函數(shù)的合法性做全面的檢查。9.4.3對被調(diào)用函數(shù)的聲明和函數(shù)原型函數(shù)原型的一般形式:形式1:
函數(shù)類型函數(shù)名(<參數(shù)類型1>,<參數(shù)類型2>,…);形式2:函數(shù)類型函數(shù)名(<參數(shù)類型1參數(shù)名1>,<參數(shù)類型2參數(shù)名2>,…);
9.4.3對被調(diào)用函數(shù)的聲明和函數(shù)原型說明:(1)如果在函數(shù)調(diào)用之前沒有對函數(shù)作聲明,則編譯系統(tǒng)把第一次遇到的函數(shù)形式(函數(shù)定義或者函數(shù)調(diào)用)作為函數(shù)聲明,并將函數(shù)類型默認(rèn)為int型。(2)如果被調(diào)用函數(shù)的定義出現(xiàn)在主調(diào)用函數(shù)之前,可以不必加以聲明。因?yàn)榫幾g系統(tǒng)已經(jīng)先知道了定義的函數(shù)類型,會根據(jù)函數(shù)首部提供的信息對函數(shù)的調(diào)用作正確性的檢查。9.4.3對被調(diào)用函數(shù)的聲明和函數(shù)原型(3)如果已在所有函數(shù)定義之前,在函數(shù)的外部已經(jīng)做了函數(shù)聲明,則在各個函數(shù)中不必對所調(diào)用的函數(shù)再作聲明。9.4.3對被調(diào)用函數(shù)的聲明和函數(shù)原型例2求兩個任意整數(shù)中的最大值。9.4.3對被調(diào)用函數(shù)的聲明和函數(shù)原型例3求兩個任意整數(shù)之和,在函數(shù)的外部聲明。9.5
函數(shù)的嵌套調(diào)用函數(shù)的嵌套調(diào)用——一個函數(shù)調(diào)用另一個函數(shù),這個函數(shù)又調(diào)用另外一個函數(shù),這樣的調(diào)用稱為函數(shù)的嵌套調(diào)用。
9.6
函數(shù)的遞歸調(diào)用9.6.1
遞歸的概念9.6.2
遞歸程序設(shè)計(jì)應(yīng)用舉例
9.6.1遞歸的概念遞歸——通俗地講,用自身的結(jié)構(gòu)來描述自身,就稱為遞歸。遞歸調(diào)用——在調(diào)用一個函數(shù)的過程中,又出現(xiàn)直接地或間接地調(diào)用該函數(shù)本身,這種函數(shù)的調(diào)用稱為遞歸調(diào)用。
9.6.2
遞歸程序設(shè)計(jì)應(yīng)用舉例
例1用遞歸求n!。
1n=0n!=n*(n-1)!n>09.6.2
遞歸程序設(shè)計(jì)應(yīng)用舉例
例2用遞歸調(diào)用的方法計(jì)算xn。
1n=0xn=
x*xn-1n>0
9.6.2
遞歸程序設(shè)計(jì)應(yīng)用舉例
例3
用遞歸求2個正整數(shù)的最大公約數(shù)。
輾轉(zhuǎn)相除法:
nmModn=0
gcd(m,n)=
gcd(n,mModn)mModn≠0
9.7數(shù)組作為函數(shù)的參數(shù)
1.?dāng)?shù)組元素作函數(shù)參數(shù)
數(shù)組元素作函數(shù)參數(shù)——傳值與用變量作實(shí)際參數(shù)一樣,數(shù)組元素作函數(shù)的實(shí)際參數(shù)是單向傳遞,屬于值傳送。
9.7數(shù)組作為函數(shù)的參數(shù)例1求10個數(shù)中的最大值。
b——最大值9.7數(shù)組作為函數(shù)的參數(shù)
2.?dāng)?shù)組名作函數(shù)參數(shù)
數(shù)組名作函數(shù)參數(shù)——傳地址9.7數(shù)組作為函數(shù)的參數(shù)說明:(1)如果形式參數(shù)是數(shù)組形式,則實(shí)際參數(shù)必須是實(shí)際的數(shù)組名,如果實(shí)際參數(shù)是數(shù)組名,則形式參數(shù)可以是同樣維數(shù)的數(shù)組名或指針。(2)在主調(diào)用函數(shù)和被調(diào)用函數(shù)中分別定義數(shù)組。(3)實(shí)參數(shù)組和形參數(shù)組必須類型一致,形參數(shù)組可以不指明長度。9.7數(shù)組作為函數(shù)的參數(shù)(4)在C中,數(shù)組名除了作變量的標(biāo)識符外,數(shù)組明換代表了該數(shù)組在內(nèi)存中的起始地址,因此,當(dāng)數(shù)組名作函數(shù)參數(shù)時,實(shí)參與形參之間是地址傳遞,實(shí)參數(shù)組名將該數(shù)組的起始地址傳遞給形參數(shù)組,兩個數(shù)組共享相同的內(nèi)存單元。編譯系統(tǒng)不再為形參數(shù)組分配存儲單元。9.7數(shù)組作為函數(shù)的參數(shù)例2在一個一維數(shù)組中存放10個學(xué)生的C語言程序設(shè)計(jì)的成績,求平均成績。9.7數(shù)組作為函數(shù)的參數(shù)例3用選擇法對數(shù)組中的10個整數(shù)按從小到大的順序排序。9.7數(shù)組作為函數(shù)的參數(shù)3.用多維數(shù)組名作函數(shù)參數(shù)用多維數(shù)組名作函數(shù)參數(shù)——傳地址9.7數(shù)組作為函數(shù)的參數(shù)
例4求一個3×4矩陣中的最大元素。9.8局部變量和全局變量1.8.1
局部變量1.8.2
全局變量
9.8.1局部變量
局部變量——在一個函數(shù)內(nèi)部定義的變量稱為局部變量。它只在本函數(shù)范圍內(nèi)有效,只有在本函數(shù)中可以使用,在此函數(shù)以外不能使用這些變量。
9.8.1局部變量說明:(1)主函數(shù)main中定義的變量只能在主函數(shù)中有效。(2)不同函數(shù)中可以使用相同名字的變量,它們代表不同的對象,互不干擾。(3)形式參數(shù)也是局部變量。(4)在一個函數(shù)內(nèi)部,可以在復(fù)合語句中定義變量,這些變量只在本復(fù)合語句中有效。
9.8.2全局變量全局變量——在函數(shù)之外定義的變量稱為外部變量,外部變量是全局變量。全局變量可以為本文件中其他函數(shù)共用。它的有效范圍為從定義變量的位置開始到本源文件結(jié)束。
9.9變量的的存儲類別9.9.1
動態(tài)存儲方式與靜態(tài)存儲方式9.9.2
auto變量用static聲明的局部變量9.9.3
用static聲明的局部變量register變量9.9.4
register變量9.9.5用extern聲明的外部變量變量
9.9.1動態(tài)存儲方式與靜態(tài)存儲方式
從變量的作用域(即從空間)來分,可以把變量分為全局變量與局部變量。
從變量值存在的時間(即生存期)來分,可以把變量分為靜態(tài)存儲方式和動態(tài)存儲方式。
9.9.1動態(tài)存儲方式與靜態(tài)存儲方式靜態(tài)存儲方式——指在程序運(yùn)行期間分配固定的存儲空間的方式。動態(tài)存儲方式——是在程序運(yùn)行期間根據(jù)需要進(jìn)行動態(tài)的分配存儲空間的方式。9.9.1動態(tài)存儲方式與靜態(tài)存儲方式內(nèi)存中提供用戶使用的存儲空間,這個存儲空間分為3個部分:
1.程序區(qū)
2.靜態(tài)存儲區(qū)
3.動態(tài)存儲區(qū)9.9.1動態(tài)存儲方式與靜態(tài)存儲方式在動態(tài)存儲區(qū)中存放以下數(shù)據(jù):(1)函數(shù)的形式參數(shù)。(2)自動變量(未加static聲明的局部變量)。(3)函數(shù)調(diào)用時保護(hù)現(xiàn)場和返回地址等。9.9.1動態(tài)存儲方式與靜態(tài)存儲方式在C語言中數(shù)據(jù)的存儲類別分為兩大類:靜態(tài)存儲類和動態(tài)存儲類。具體包含4種:自動的(auto)、靜態(tài)的(static)、寄存器的(register)和外部的(extern)。根據(jù)變量的存儲類別,可以確定變量的作用域和生存期。9.9.2auto變量自動變量——函數(shù)中的局部變量不說明存儲類別的或者是用auto說明類別的變量稱為自動變量。
9.9.3用static聲明的局部變量靜態(tài)局部變量——使用static說明其類別的局部變量稱為靜態(tài)局部變量。9.9.3用static聲明的局部變量靜態(tài)局部變量在函數(shù)調(diào)用結(jié)束后,函數(shù)中的局部變量的值不消失,保留原值,即不釋放所占用的存儲單元,在下一次調(diào)用函數(shù)時,靜態(tài)局部變量已經(jīng)有值,靜態(tài)局部變量只初始化一次。9.9.3用static聲明的局部變量
靜態(tài)局部變量與自動局部變量的比較:(1)靜態(tài)局部變量屬于靜態(tài)存儲類別,在靜態(tài)區(qū)內(nèi)分配存儲單元,在程序整個運(yùn)行期間都不釋放所占用的空間。而自動變量屬于動態(tài)存儲類別,在動態(tài)區(qū)內(nèi)分配存儲單元,在函數(shù)調(diào)用結(jié)束后釋放所占用的空間。9.9.3用static聲明的局部變量(2)靜態(tài)局部變量只在編譯時賦初值一次,以后沒次調(diào)用函數(shù)時不再初始化變量,從而保留了上一次函數(shù)調(diào)用結(jié)束時的值。而自動變量不是在編譯時賦初值,而是在調(diào)用函數(shù)時初始化變量,每調(diào)用一次函數(shù)就初始化一次。9.9.3用static聲明的局部變量(3)靜態(tài)局部變量不初始化,則編譯系統(tǒng)自動對數(shù)值型變量賦初值0,對字符變量賦初空值。而自動變量不初始化,則它的值是一個不確定的訶子。這是由于每次函數(shù)調(diào)用結(jié)束后存儲單元已經(jīng)釋放,下次調(diào)用時又重新另外反陪存儲單元,而新分配的單元中的值是不確定的。9.9.3用static聲明的局部變量那么,何時使用靜態(tài)局部變量呢?(1)需要保留函數(shù)上一次調(diào)用的值。(2)如果初始化后,變量只被引用而不改變其值,這時使用靜態(tài)局部變量比較方便,以免每次調(diào)用時重新賦值。
9.9.3用static聲明的局部變量例1分析下列
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 深度解析(2026)《GBT 25658.1-2010數(shù)控仿形定梁龍門鏜銑床 第1部分:精度檢驗(yàn)》(2026年)深度解析
- 國際關(guān)系中的“韌性”(resilience)話語霸權(quán)化批判-基于2023–2025年歐盟、北約、聯(lián)合國戰(zhàn)略文件共現(xiàn)分析
- 2025年江西移動第四季度社會招聘備考筆試題庫及答案解析
- 2025年西安市雁塔區(qū)第一小學(xué)教師招聘考試筆試備考試題及答案解析
- 2025云南農(nóng)業(yè)生產(chǎn)資料股份有限公司及下屬公司招聘考試參考試題及答案解析
- 2025四川宜賓市消防救援局第五次招聘政府專職消防員35人模擬筆試試題及答案解析
- 2026河北滄州醫(yī)學(xué)高等??茖W(xué)校高層次人才選聘50人備考筆試試題及答案解析
- 《人口普查》數(shù)學(xué)課件教案
- 2025安徽六安霍邱老年大學(xué)旅游專業(yè)教師招聘1人備考考試題庫及答案解析
- 2025年下半年武警江西總隊(duì)醫(yī)院社會招聘5人考試備考題庫及答案解析
- 2025-2030中國水系鋅離子電池市場深度研究及未來發(fā)展建議報告
- T-CNFIA 208-2024 花膠干魚鰾標(biāo)準(zhǔn)
- 蓄水池防水施工方案
- 動物咬傷急救醫(yī)學(xué)課程課件
- 巨量千川營銷師(初級)認(rèn)證考試題(附答案)
- 《數(shù)字地圖之綜合》課件
- 《土木工程專業(yè)英語 第2版》 課件 Unit5 Composite Construction;Unit6 Introduction to Foundation Analysis and Design
- 《讓子彈飛》電影賞析
- 華北戰(zhàn)記-在中國發(fā)生的真實(shí)的戰(zhàn)爭-桑島節(jié)郎著
- 干細(xì)胞研究與臨床應(yīng)用
- 排澇泵站重建工程安全生產(chǎn)施工方案
評論
0/150
提交評論