




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第七章第七章 函函 數(shù)數(shù)7.1 概概 述述二、二、C C函數(shù)與函數(shù)與C C程序結(jié)構(gòu)程序結(jié)構(gòu) C C程序由主函數(shù)(程序由主函數(shù)(mainmain函數(shù))和若干個(gè)子函數(shù)構(gòu)成;函數(shù))和若干個(gè)子函數(shù)構(gòu)成;主函數(shù)調(diào)用子函數(shù);主函數(shù)調(diào)用子函數(shù); 子函數(shù)在定義時(shí)是并列的;子函數(shù)在定義時(shí)是并列的;子函數(shù)可相互調(diào)用,也可被多次調(diào)用。子函數(shù)可相互調(diào)用,也可被多次調(diào)用。 將一個(gè)將一個(gè)C C程序分為若干模塊,每個(gè)模塊實(shí)現(xiàn)一個(gè)特定的功能,在程序分為若干模塊,每個(gè)模塊實(shí)現(xiàn)一個(gè)特定的功能,在C C語(yǔ)言中語(yǔ)言中用函數(shù)來(lái)實(shí)現(xiàn)模塊的功能。函數(shù)是具有某種功能的獨(dú)立程序段。用函數(shù)來(lái)實(shí)現(xiàn)模塊的功能。函數(shù)是具有某種功能的獨(dú)立程序段。 一、
2、一、C C函數(shù)的概念函數(shù)的概念mainmaina ab bc cd de ef fg gh hh hi ie eg g函數(shù)調(diào)用示例:函數(shù)調(diào)用示例:main() /* 主函數(shù)主函數(shù) */ print_star(); /*調(diào)用調(diào)用print_star函數(shù)畫(huà)函數(shù)畫(huà)*/ print_message(); /*調(diào)用調(diào)用print _message函數(shù)寫(xiě)字函數(shù)寫(xiě)字*/ print_star() ; /*調(diào)用調(diào)用print_star函數(shù)畫(huà)函數(shù)畫(huà)*/ print_star() /*定義定義print_star函數(shù)函數(shù)*/ prinf(“* n”); print_message() /*定義定義print_me
3、ssage函數(shù)函數(shù)*/ prinf(“ Hello! n ”); 運(yùn)行結(jié)果:運(yùn)行結(jié)果:* Hello! * 一個(gè)源文件一個(gè)源文件由一個(gè)或多個(gè)函數(shù)組成,是由一個(gè)或多個(gè)函數(shù)組成,是一個(gè)獨(dú)立編譯單元。一個(gè)獨(dú)立編譯單元。一個(gè)一個(gè)C C程序程序由一個(gè)或多個(gè)源文件組成;由一個(gè)或多個(gè)源文件組成;C C程序執(zhí)行總是從程序執(zhí)行總是從mainmain函數(shù)開(kāi)始,調(diào)用函數(shù)開(kāi)始,調(diào)用其他函數(shù)后流程回到其他函數(shù)后流程回到mainmain。函數(shù)不能嵌套定義,但可互相調(diào)用。注函數(shù)不能嵌套定義,但可互相調(diào)用。注意不能調(diào)用意不能調(diào)用mainmain函數(shù)。函數(shù)。 四、函數(shù)的分類(lèi)四、函數(shù)的分類(lèi) 1.1.函數(shù)參數(shù)形式函數(shù)參數(shù)形式無(wú)參函
4、數(shù)無(wú)參函數(shù)有參函數(shù)有參函數(shù)2. 2. 從用戶(hù)使用的角度分從用戶(hù)使用的角度分標(biāo)準(zhǔn)函數(shù)標(biāo)準(zhǔn)函數(shù)( (庫(kù)函數(shù)庫(kù)函數(shù)) )用戶(hù)自己定義的函數(shù)用戶(hù)自己定義的函數(shù)庫(kù)函數(shù)庫(kù)函數(shù)編譯系統(tǒng)提供的已設(shè)計(jì)好的函數(shù),用戶(hù)只需調(diào)用而編譯系統(tǒng)提供的已設(shè)計(jì)好的函數(shù),用戶(hù)只需調(diào)用而無(wú)需要去實(shí)現(xiàn)它無(wú)需要去實(shí)現(xiàn)它(scanf(scanf,printfprintf,getchargetchar,putcharputchar等等) )。用戶(hù)自定義函數(shù)用戶(hù)自定義函數(shù)程序員自己定義和設(shè)計(jì)的函數(shù)。程序員自己定義和設(shè)計(jì)的函數(shù)。有參函數(shù)例有參函數(shù)例( (輸出兩數(shù)中大者輸出兩數(shù)中大者) )#include main( ) int max(int
5、 x,int y); int n1,n2,a; scanf(%d,%d,&n1,&n2); a = max(n1,n2); printf(max=%d,a); int max( int x, int y ) int z; if(xy) z=x; else z=y; return (z);無(wú)參函數(shù)例無(wú)參函數(shù)例main() print_star(); print_message(); print_star() ; print_star() prinf(“* n”); print_message() prinf(“ Hello! n ”); 7.2 7.2 函數(shù)的定義與應(yīng)用函數(shù)的定義
6、與應(yīng)用 例如:例如: print_message() printf(“Hello! n ”);二、二、 有參函數(shù)的定義形式有參函數(shù)的定義形式類(lèi)型標(biāo)識(shí)符類(lèi)型標(biāo)識(shí)符 函數(shù)名(形參表列)函數(shù)名(形參表列) 說(shuō)明部分說(shuō)明部分 語(yǔ)句語(yǔ)句 有參數(shù)傳遞有參數(shù)傳遞例如:例如:求求x和和y二者中大者二者中大者int max (int x, int y) /*x,y為形參為形參*/ int z; /*函數(shù)體中變量的說(shuō)明函數(shù)體中變量的說(shuō)明*/ z=xy?x:y; return (z) ; /*將將z的值作為函數(shù)返回值的值作為函數(shù)返回值*/類(lèi)型標(biāo)識(shí)符類(lèi)型標(biāo)識(shí)符 函數(shù)名()函數(shù)名() 說(shuō)明部分說(shuō)明部分 語(yǔ)句語(yǔ)句 無(wú)參數(shù)
7、傳遞無(wú)參數(shù)傳遞一、一、 無(wú)參函數(shù)的定義形式無(wú)參函數(shù)的定義形式三、三、 空函數(shù)的定義形式空函數(shù)的定義形式類(lèi)型標(biāo)識(shí)符類(lèi)型標(biāo)識(shí)符 函數(shù)名函數(shù)名( ) ( ) 功能功能:調(diào)用后什么也不做。:調(diào)用后什么也不做。用處用處:建立程序結(jié)構(gòu),在需要時(shí)補(bǔ)充功能。:建立程序結(jié)構(gòu),在需要時(shí)補(bǔ)充功能。 例如例如:dummy() 若無(wú)參數(shù),類(lèi)型標(biāo)識(shí)符寫(xiě)若無(wú)參數(shù),類(lèi)型標(biāo)識(shí)符寫(xiě)void或不寫(xiě)或不寫(xiě)函數(shù)返回函數(shù)返回值的類(lèi)型,值的類(lèi)型,若不說(shuō)明若不說(shuō)明類(lèi)型,默類(lèi)型,默認(rèn)為整型。認(rèn)為整型。是被初始化的是被初始化的內(nèi)部變量,壽內(nèi)部變量,壽命和可見(jiàn)性?xún)H命和可見(jiàn)性?xún)H限于函數(shù)內(nèi)部限于函數(shù)內(nèi)部三、三、 形式參數(shù)和實(shí)際參數(shù)形式參數(shù)和實(shí)際參數(shù)形
8、式參數(shù)形式參數(shù)定義函數(shù)時(shí)函數(shù)名后面括弧中的變量名,簡(jiǎn)稱(chēng)形參。定義函數(shù)時(shí)函數(shù)名后面括弧中的變量名,簡(jiǎn)稱(chēng)形參。實(shí)際參數(shù)實(shí)際參數(shù)調(diào)用函數(shù)時(shí)函數(shù)名后面括弧中的表達(dá)式,簡(jiǎn)稱(chēng)實(shí)參。調(diào)用函數(shù)時(shí)函數(shù)名后面括弧中的表達(dá)式,簡(jiǎn)稱(chēng)實(shí)參。 c=max(a, b); - 實(shí)參:實(shí)參:在運(yùn)行時(shí)在運(yùn)行時(shí) 把函數(shù)的把函數(shù)的 max(int x,int y) 把值傳給函數(shù)。把值傳給函數(shù)。 結(jié)果賦給結(jié)果賦給 函數(shù)名函數(shù)名 returu (z); 形參:形參:通知系統(tǒng)通知系統(tǒng) 要預(yù)留內(nèi)存位置要預(yù)留內(nèi)存位置。 上例中形參與實(shí)參、函數(shù)名與返回值之間的關(guān)系上例中形參與實(shí)參、函數(shù)名與返回值之間的關(guān)系main( ) int max( int
9、 x, int y); int a,b,c; scanf (“%d,%d,&a,&b); c=max(a,b); printf(“Max is %d”,c);int max( int x, int y) int z; z=xy? x:y; return(z);形參表形參表實(shí)參表實(shí)參表 實(shí)參可是常量、變量或表達(dá)式,實(shí)參可是常量、變量或表達(dá)式,必須有確定的值;多個(gè)實(shí)參間必須有確定的值;多個(gè)實(shí)參間用逗號(hào)隔開(kāi);用逗號(hào)隔開(kāi); 對(duì)每個(gè)形參必須指明其名字和對(duì)每個(gè)形參必須指明其名字和數(shù)據(jù)類(lèi)型;數(shù)據(jù)類(lèi)型; 實(shí)參個(gè)數(shù)、類(lèi)型必須與對(duì)應(yīng)的實(shí)參個(gè)數(shù)、類(lèi)型必須與對(duì)應(yīng)的形參一致;形參一致; 形參是函數(shù)的內(nèi)部
10、變量,只在形參是函數(shù)的內(nèi)部變量,只在函數(shù)內(nèi)部才有意義;函數(shù)內(nèi)部才有意義;實(shí)參對(duì)形參的數(shù)據(jù)傳遞是值傳遞,即單向傳遞,只由實(shí)參傳遞給形參,實(shí)參對(duì)形參的數(shù)據(jù)傳遞是值傳遞,即單向傳遞,只由實(shí)參傳遞給形參,反之不可。調(diào)用結(jié)束后,只有形參單元被釋放,反之不可。調(diào)用結(jié)束后,只有形參單元被釋放,實(shí)參單元中的值不變實(shí)參單元中的值不變。 形參調(diào)用前不占內(nèi)存單元,形參調(diào)用前不占內(nèi)存單元,調(diào)用時(shí)占用調(diào)用時(shí)占用, , 調(diào)用后釋放;調(diào)用后釋放;關(guān)于參數(shù)的幾點(diǎn)說(shuō)明關(guān)于參數(shù)的幾點(diǎn)說(shuō)明main( ) int max( int x, int y) ;int a,b,c; scanf (“%d,%d,&a,&b);
11、 c=max(a,b); printf(“Max is %d”,c);int max( int x, int y) int z; z=xy? x:y; return(z);函數(shù)的返回值語(yǔ)句函數(shù)的返回值語(yǔ)句returnreturn將被調(diào)函數(shù)的一個(gè)確定值帶回主調(diào)函數(shù)。將被調(diào)函數(shù)的一個(gè)確定值帶回主調(diào)函數(shù)。return(return(函數(shù)返回值函數(shù)返回值) ); 或或 return return 函數(shù)返回值;函數(shù)返回值; 通過(guò)函數(shù)調(diào)用使主調(diào)函數(shù)得到一個(gè)確定的值通過(guò)函數(shù)調(diào)用使主調(diào)函數(shù)得到一個(gè)確定的值四、函數(shù)的返回值四、函數(shù)的返回值main( ) int max( int x, int y) ;int a
12、,b,c; scanf (“%d,%d,&a,&b); c=max(a,b); printf(“Max is %d”,c);int max( int x, int y) int z; z=xy? x:y; return(z);此時(shí)函數(shù)的返回值是此時(shí)函數(shù)的返回值是5,因此,因此c=5有確定值的常量、變有確定值的常量、變量或表達(dá)式量或表達(dá)式五、函數(shù)調(diào)用的一般形式五、函數(shù)調(diào)用的一般形式 函數(shù)名(實(shí)際參數(shù)表)函數(shù)名(實(shí)際參數(shù)表) 有參數(shù)函數(shù)有參數(shù)函數(shù)無(wú)參數(shù)函數(shù)無(wú)參數(shù)函數(shù) 函數(shù)名()函數(shù)名() void print_star()printf(“*”);main( ) int a,b,c;
13、 scanf (“%d,%d,&a,&b); c=2*max(a,b); print-star(); printf(“c= %d”,c);int max( int x, int y) int z; z=xy? x:y; return(z);在程序編譯階段對(duì)調(diào)用函數(shù)的合法性進(jìn)行在程序編譯階段對(duì)調(diào)用函數(shù)的合法性進(jìn)行全面檢查。如沒(méi)有函數(shù)聲明,編譯到包全面檢查。如沒(méi)有函數(shù)聲明,編譯到包含函數(shù)調(diào)用的語(yǔ)句時(shí)(如含函數(shù)調(diào)用的語(yǔ)句時(shí)(如xx(a,b)),編),編譯系統(tǒng)不知道譯系統(tǒng)不知道xx是函數(shù)名,也無(wú)法判斷是函數(shù)名,也無(wú)法判斷實(shí)參(實(shí)參(a,b)的類(lèi)型和個(gè)數(shù)是否正確,無(wú))的類(lèi)型和個(gè)數(shù)是否正確
14、,無(wú)法進(jìn)行正確性的檢查。只有在運(yùn)行時(shí)才法進(jìn)行正確性的檢查。只有在運(yùn)行時(shí)才會(huì)發(fā)現(xiàn)實(shí)參與形參的類(lèi)型或個(gè)數(shù)不一致,會(huì)發(fā)現(xiàn)實(shí)參與形參的類(lèi)型或個(gè)數(shù)不一致,出現(xiàn)運(yùn)行錯(cuò)誤。出現(xiàn)運(yùn)行錯(cuò)誤。 在在C C語(yǔ)言中,以上的函數(shù)說(shuō)明稱(chēng)為函數(shù)原型。語(yǔ)言中,以上的函數(shù)說(shuō)明稱(chēng)為函數(shù)原型。 /*定義定義add函數(shù)函數(shù)*/float add (float x,float y) float z; z=x+y; return (z); main() float add(float x,float y); float a, b, c; scanf(“ %f, %f”, &a, &b); c=add(a,b) ; pri
15、ntf(“ sum is %f ”, c );對(duì)被調(diào)用函數(shù)的說(shuō)明對(duì)被調(diào)用函數(shù)的說(shuō)明作為表達(dá)式被調(diào)用作為表達(dá)式被調(diào)用例例1:編寫(xiě)函數(shù),求:編寫(xiě)函數(shù),求n!。long xx(int x) long t=1; int i; if(x=0) printf(“error”); else for(i=1;i=x,i+) t=t*i; return (t); main() int n;long s; scanf(“%d”,&n); s=xx(n); printf(“%ld”,s);例例2:編寫(xiě)函數(shù),求:編寫(xiě)函數(shù),求1+2+3+.n。int mm(int x) int t=0; int i; for(
16、i=1;i=x,i+) t=t+i; return (t); main() int n; int s; scanf(“%d”,&n); s=mm(n); printf(“%d”,s);7.3 7.3 函數(shù)的嵌套調(diào)用函數(shù)的嵌套調(diào)用 C語(yǔ)言不能嵌套定義,但可以嵌套調(diào)用。語(yǔ)言不能嵌套定義,但可以嵌套調(diào)用。嵌套定義:在定義一個(gè)函數(shù)時(shí),該函數(shù)體內(nèi)包含嵌套定義:在定義一個(gè)函數(shù)時(shí),該函數(shù)體內(nèi)包含 另一個(gè)函數(shù)的定義。另一個(gè)函數(shù)的定義。嵌套調(diào)用嵌套調(diào)用 調(diào)用一個(gè)函數(shù)的過(guò)程中,又調(diào)用另一個(gè)函數(shù)。調(diào)用一個(gè)函數(shù)的過(guò)程中,又調(diào)用另一個(gè)函數(shù)。main函數(shù)函數(shù)調(diào)用調(diào)用A函數(shù)函數(shù)結(jié)結(jié) 束束A函數(shù)函數(shù)調(diào)用調(diào)用B函數(shù)函數(shù)
17、B函數(shù)函數(shù)192873456例題:編寫(xiě)函數(shù),求例題:編寫(xiě)函數(shù),求1!+3!+5!+.k! 其中其中k是小于是小于9的奇數(shù),要求該的奇數(shù),要求該函數(shù)中調(diào)用求階乘函數(shù)求出各階乘的值。函數(shù)中調(diào)用求階乘函數(shù)求出各階乘的值。double xx(int x) double t=1; int i; for(i=1;i=x,i+) t=t*i; return (t) ;double yy(int m) double s=0; int i; for(i=1;i1)main() double jx(int m) int n; double t; printf(“Input n :”); scanf(“%d”,&a
18、mp;n); t= jx(n); printf(%f,t);double jx(int m) double f; if(m=1) f=1; else f=jx(m-1)*m; return f; 7.5 變量的作用域變量的作用域 在函數(shù)內(nèi)部或復(fù)合語(yǔ)句內(nèi)部定義的變量在函數(shù)內(nèi)部或復(fù)合語(yǔ)句內(nèi)部定義的變量作用域:函數(shù)內(nèi)或復(fù)合語(yǔ)句內(nèi)。作用域:函數(shù)內(nèi)或復(fù)合語(yǔ)句內(nèi)。 局部變量局部變量主函數(shù)主函數(shù) main 定義的變量只在主函數(shù)中有效,定義的變量只在主函數(shù)中有效,主函數(shù)不能使用其它函數(shù)定義的變量。主函數(shù)不能使用其它函數(shù)定義的變量。不同函數(shù)中的同名變量互不影響。不同函數(shù)中的同名變量互不影響。形參也是局部變量。形
19、參也是局部變量。在本函數(shù)中在本函數(shù)中a a、b b、c c有效有效f1(int a) int b,c; 在本函數(shù)中在本函數(shù)中a a、b b、c c、d d有效有效但與但與f1f1函數(shù)中的函數(shù)中的a a、b b、c c不同不同f1(int a,int b) int d,c; 在本函數(shù)中在本函數(shù)中m m、n n有效有效main() int m,n; 例:例: main() int a=10,b=10; int c c=a+b; a、b在此在此 c在此范圍在此范圍 范圍內(nèi)有效范圍內(nèi)有效 內(nèi)有效內(nèi)有效 . 在函數(shù)外部定義的變量(也稱(chēng)外部變量)在函數(shù)外部定義的變量(也稱(chēng)外部變量) 。 作用域:可以為本文
20、件中所有的函數(shù)公用。作用域:可以為本文件中所有的函數(shù)公用。全局變量全局變量從定義變量的位置開(kāi)始到本文件結(jié)束,從定義變量的位置開(kāi)始到本文件結(jié)束,這段程序中的函數(shù)可直接使用外部變量。這段程序中的函數(shù)可直接使用外部變量。如果在定義點(diǎn)之前的函數(shù)想使用外部如果在定義點(diǎn)之前的函數(shù)想使用外部 變變量,則應(yīng)該在該函數(shù)中用關(guān)鍵字量,則應(yīng)該在該函數(shù)中用關(guān)鍵字 extern extern 作作“外部變量外部變量”說(shuō)明。說(shuō)明。如果在同一源文件中,外部變量和局部如果在同一源文件中,外部變量和局部變量同名,則在局部變量的作用范圍內(nèi),變量同名,則在局部變量的作用范圍內(nèi),外部變量不起作用。外部變量不起作用。優(yōu)點(diǎn)優(yōu)點(diǎn)增加了函數(shù)
21、間數(shù)據(jù)聯(lián)系同一文件中的一些函數(shù)引用全局變量,增加了函數(shù)間數(shù)據(jù)聯(lián)系同一文件中的一些函數(shù)引用全局變量,當(dāng)某個(gè)函數(shù)中改變了全局變量的值,其它函數(shù)中的全局變量值也當(dāng)某個(gè)函數(shù)中改變了全局變量的值,其它函數(shù)中的全局變量值也隨之改變。隨之改變。函數(shù)可以得到多個(gè)返回值函數(shù)可以得到多個(gè)返回值缺點(diǎn)缺點(diǎn)全局全局 變量在程序的全部執(zhí)行過(guò)程中都占用存儲(chǔ)單元。變量在程序的全部執(zhí)行過(guò)程中都占用存儲(chǔ)單元。使用全局變量不符合程序設(shè)計(jì)中要求模塊間使用全局變量不符合程序設(shè)計(jì)中要求模塊間“強(qiáng)內(nèi)聚性、弱偶強(qiáng)內(nèi)聚性、弱偶合性合性”的原則。的原則。使用全局變量過(guò)多,會(huì)降低程序的可讀性和可維護(hù)性。使用全局變量過(guò)多,會(huì)降低程序的可讀性和可維護(hù)
22、性。7.6 變量的存儲(chǔ)類(lèi)別變量的存儲(chǔ)類(lèi)別 一、靜態(tài)存儲(chǔ)方式和動(dòng)態(tài)存儲(chǔ)方式一、靜態(tài)存儲(chǔ)方式和動(dòng)態(tài)存儲(chǔ)方式l靜態(tài)存儲(chǔ)方式:程序運(yùn)行期間分配固定存儲(chǔ)靜態(tài)存儲(chǔ)方式:程序運(yùn)行期間分配固定存儲(chǔ) 空間的方式。空間的方式。l動(dòng)態(tài)存儲(chǔ)方式:程序運(yùn)行期間根據(jù)需要進(jìn)行動(dòng)態(tài)存儲(chǔ)方式:程序運(yùn)行期間根據(jù)需要進(jìn)行 動(dòng)態(tài)的分配存儲(chǔ)空間的方式。動(dòng)態(tài)的分配存儲(chǔ)空間的方式。程序區(qū)程序區(qū)靜態(tài)存儲(chǔ)區(qū)靜態(tài)存儲(chǔ)區(qū)動(dòng)態(tài)存儲(chǔ)區(qū)動(dòng)態(tài)存儲(chǔ)區(qū)全局變量,局部靜態(tài)變量全局變量,局部靜態(tài)變量形式參數(shù)形式參數(shù)局部變量(自動(dòng))局部變量(自動(dòng))函數(shù)調(diào)用的現(xiàn)場(chǎng)函數(shù)調(diào)用的現(xiàn)場(chǎng)保護(hù)和返回地址保護(hù)和返回地址二、靜態(tài)存儲(chǔ)變量和動(dòng)態(tài)存儲(chǔ)變量二、靜態(tài)存儲(chǔ)變量和動(dòng)態(tài)存儲(chǔ)變量l
23、靜態(tài)存儲(chǔ)變量:用靜態(tài)存儲(chǔ)方式存儲(chǔ)的變量。靜態(tài)存儲(chǔ)變量:用靜態(tài)存儲(chǔ)方式存儲(chǔ)的變量。l動(dòng)態(tài)存儲(chǔ)變量:用動(dòng)態(tài)存儲(chǔ)方式存儲(chǔ)的變量。動(dòng)態(tài)存儲(chǔ)變量:用動(dòng)態(tài)存儲(chǔ)方式存儲(chǔ)的變量。特點(diǎn):在特點(diǎn):在 靜態(tài)存儲(chǔ)區(qū)分配存儲(chǔ)單元,整個(gè)程序靜態(tài)存儲(chǔ)區(qū)分配存儲(chǔ)單元,整個(gè)程序 運(yùn)行期間都不釋放。運(yùn)行期間都不釋放。 特點(diǎn):函數(shù)開(kāi)始調(diào)用時(shí)為變量分配存儲(chǔ)空間,特點(diǎn):函數(shù)開(kāi)始調(diào)用時(shí)為變量分配存儲(chǔ)空間, 函數(shù)結(jié)束時(shí)釋放這些空間。一個(gè)程序兩函數(shù)結(jié)束時(shí)釋放這些空間。一個(gè)程序兩 次調(diào)用同一函數(shù),其中同一個(gè)局部變量次調(diào)用同一函數(shù),其中同一個(gè)局部變量 的內(nèi)存地址可能不同。的內(nèi)存地址可能不同。C語(yǔ)言變量的屬性:語(yǔ)言變量的屬性:數(shù)據(jù)類(lèi)型數(shù)據(jù)類(lèi)型 存
24、儲(chǔ)類(lèi)型存儲(chǔ)類(lèi)型存儲(chǔ)類(lèi)型:數(shù)據(jù)在內(nèi)存中的存儲(chǔ)方式。存儲(chǔ)類(lèi)型:數(shù)據(jù)在內(nèi)存中的存儲(chǔ)方式。 即靜態(tài)存儲(chǔ)方式和動(dòng)態(tài)存儲(chǔ)方式。即靜態(tài)存儲(chǔ)方式和動(dòng)態(tài)存儲(chǔ)方式。三、變量的屬性及其定義三、變量的屬性及其定義數(shù)據(jù)類(lèi)型:整型,實(shí)型,字符型數(shù)據(jù)類(lèi)型:整型,實(shí)型,字符型存儲(chǔ)分類(lèi)符:存儲(chǔ)分類(lèi)符: auto (自動(dòng)的自動(dòng)的)、register(寄存器的寄存器的)static (靜態(tài)的靜態(tài)的)、 extern(外部的外部的)定義變量的一般形式:定義變量的一般形式:存儲(chǔ)分類(lèi)符存儲(chǔ)分類(lèi)符 類(lèi)型標(biāo)識(shí)符類(lèi)型標(biāo)識(shí)符 變量名;變量名;如:auto int a; static int b; register int d;1. auto(自
25、動(dòng)的)自動(dòng)的)例如:例如:auto int a; 四、變量的存儲(chǔ)類(lèi)型四、變量的存儲(chǔ)類(lèi)型auto說(shuō)明局部變量,該局部變量是自動(dòng)變量;說(shuō)明局部變量,該局部變量是自動(dòng)變量; 自動(dòng)變量存放在動(dòng)態(tài)存儲(chǔ)區(qū),屬于動(dòng)態(tài)存儲(chǔ)變量;自動(dòng)變量存放在動(dòng)態(tài)存儲(chǔ)區(qū),屬于動(dòng)態(tài)存儲(chǔ)變量; 變量作用域是其所在的函數(shù)內(nèi)部。變量作用域是其所在的函數(shù)內(nèi)部。說(shuō)明:說(shuō)明: 在一個(gè)函數(shù)內(nèi)如果局部變量不作存儲(chǔ)類(lèi)在一個(gè)函數(shù)內(nèi)如果局部變量不作存儲(chǔ)類(lèi) 型說(shuō)明,均為自動(dòng)變量;型說(shuō)明,均為自動(dòng)變量;形式參數(shù)缺省存儲(chǔ)類(lèi)型是形式參數(shù)缺省存儲(chǔ)類(lèi)型是auto,但不能,但不能 將將auto加在形參說(shuō)明之前。加在形參說(shuō)明之前。 如:如:int b, c=3 等價(jià)
26、于等價(jià)于 auto int b, c=3; 如:如:int max(auto int x, auto int y) 2. static(靜態(tài)的)靜態(tài)的)static可用于說(shuō)明可用于說(shuō)明局部變量局部變量局部靜態(tài)變量局部靜態(tài)變量全局變量全局變量外部靜態(tài)變量外部靜態(tài)變量局部靜態(tài)變量局部靜態(tài)變量 作用域僅限于定義它的函數(shù)內(nèi)部作用域僅限于定義它的函數(shù)內(nèi)部 。存放在靜態(tài)存儲(chǔ)區(qū),整個(gè)程序運(yùn)行期間都不釋放。存放在靜態(tài)存儲(chǔ)區(qū),整個(gè)程序運(yùn)行期間都不釋放。編譯時(shí)賦初值,每次調(diào)用不再賦初值,只保留調(diào)用結(jié)束時(shí)變編譯時(shí)賦初值,每次調(diào)用不再賦初值,只保留調(diào)用結(jié)束時(shí)變量的值。量的值。 自動(dòng)變量調(diào)用一次,重新賦值一次。自動(dòng)變量
27、調(diào)用一次,重新賦值一次。局部靜態(tài)變量不賦初值,編譯時(shí)自動(dòng)賦局部靜態(tài)變量不賦初值,編譯時(shí)自動(dòng)賦0。 自動(dòng)變量不賦初值,其值不確定。自動(dòng)變量不賦初值,其值不確定。例如:打印例如:打印1!5!int fac(int n) static int f=1; f=f*n; return(f)main() int i; for(i=1;i=5;i+) printf(“%d!=%dn”,i,fac(i);外部靜態(tài)變量外部靜態(tài)變量 只能在本源程序文件中被使用。只能在本源程序文件中被使用。 不論是否加不論是否加static說(shuō)明,編譯時(shí)分配在靜態(tài)存儲(chǔ)區(qū)。說(shuō)明,編譯時(shí)分配在靜態(tài)存儲(chǔ)區(qū)。 3. register(寄存器的)寄存器的)寄存器:寄存器:CPU中運(yùn)算器的組成部分,暫時(shí)存放數(shù)據(jù)。中運(yùn)算器的組成部分,暫時(shí)存放數(shù)據(jù)。寄存器變量:直接放置在運(yùn)算器的寄存器中的變量。引入寄寄存器變量:直接放置在運(yùn)算器的寄存器
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 桃樹(shù)造林規(guī)劃方案范本
- 礦山安全監(jiān)測(cè)與火災(zāi)防控考核試卷
- 彈簧在汽車(chē)油門(mén)踏板的反饋和控制性能考核試卷
- 莞城區(qū)水庫(kù)清淤施工方案
- 證券從業(yè)資格證行業(yè)競(jìng)爭(zhēng)策略試題及答案
- 舊房地基維修施工方案
- 水下作業(yè)的深海地質(zhì)研究新技術(shù)考核試卷
- 考生必知的知識(shí)點(diǎn)證券從業(yè)試題及答案
- 2025年投資組合理論試題及答案
- 2024年微生物檢測(cè)技師真題及答案
- 邁瑞公司中文簡(jiǎn)介
- 合并會(huì)計(jì)報(bào)表編制模板
- 攪拌車(chē)說(shuō)明書(shū)
- XX大學(xué)學(xué)生中文成績(jī)單(人力資源管理專(zhuān)業(yè))
- 施耐德PLC 標(biāo)準(zhǔn)指令庫(kù)
- 力之優(yōu)叉車(chē)FB-DC70故障代碼
- 電動(dòng)叉車(chē)控制器電路圖大全
- 法學(xué)概論的試題及答案
- 福建省水文地質(zhì)圖
- 出境竹木草制品生產(chǎn)加工企業(yè)
- 靜態(tài)存儲(chǔ)器介紹
評(píng)論
0/150
提交評(píng)論