C語言程序設(shè)計教學課件-第七章-用函數(shù)實現(xiàn)模塊化程序設(shè)計_第1頁
C語言程序設(shè)計教學課件-第七章-用函數(shù)實現(xiàn)模塊化程序設(shè)計_第2頁
C語言程序設(shè)計教學課件-第七章-用函數(shù)實現(xiàn)模塊化程序設(shè)計_第3頁
C語言程序設(shè)計教學課件-第七章-用函數(shù)實現(xiàn)模塊化程序設(shè)計_第4頁
C語言程序設(shè)計教學課件-第七章-用函數(shù)實現(xiàn)模塊化程序設(shè)計_第5頁
已閱讀5頁,還剩72頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第七章 用函數(shù)實現(xiàn)模塊化程序設(shè)計交實驗報告140頁3題格式:按照上機指導書171頁附錄D格式書寫采用統(tǒng)一的實驗報告紙算法是解決具體問題的方案基本要求:根據(jù)給出的算法編寫程序7.1 為什么要用函數(shù)實際的軟件開發(fā)實際問題往往由多個基本問題構(gòu)成。要求軟件開發(fā)人員首先分析問題,將問題分解為基本問題。其次,逐個解決每個基本問題。程序與問題的關(guān)系對軟件開發(fā)人員的要求分析并分解問題(高級要求)。設(shè)計解決基本問題的函數(shù)(基本要求)。例iA 和 iB 為兩個整數(shù),iA 是基數(shù),iB 是指數(shù).如何計算變量result保存最后結(jié)果,base為底數(shù),exponent為指數(shù)。result=1;for(counter=1

2、;counter=exponent;counter+)result*=base;計算35、 55、 85問題如果要分別計算100對整數(shù)的次冪,需要多少for?解決方案我們制造一個零件(函數(shù)),它負責計算次冪當需要計算次冪時,告訴零件基數(shù)和指數(shù),零件返回結(jié)果。 函數(shù)就象提供服務(wù)的人。第一個角度:程序就是機器。函數(shù)就是零件。程序由函數(shù)構(gòu)成。第二個角度:函數(shù)可以為其他函數(shù)提供服務(wù),就象服務(wù)人員。1. 什么是函數(shù)?函數(shù)就是可以完成某項基本任務(wù)的一組語句。函數(shù)名是唯一的。 函數(shù)可以被其他的函數(shù)使用,稱為函數(shù)的調(diào)用。參數(shù)主調(diào)用函數(shù)給被調(diào)用函數(shù)一些數(shù)據(jù),即參數(shù)。被調(diào)用函數(shù)根據(jù)參數(shù)值完成相應的工作。 返回值被

3、調(diào)用函數(shù)完成工作后,可能會返回某些數(shù)據(jù)作為計算結(jié)果。函數(shù)的要素函數(shù)名參數(shù)返回值函數(shù)體(語句)函數(shù)調(diào)用示例:main() /* 主函數(shù) */ print_star(); /*調(diào)用print_star函數(shù)畫*/ print_message(); /*調(diào)用print _message函數(shù)寫字*/ print_star() ; /*調(diào)用print_star函數(shù)畫*/ print_star() /*定義print_star函數(shù)*/ prinf(“* n”); print_message() /*定義print_message函數(shù)*/ prinf(“ Hello! n ”); 運行結(jié)果:* Hello!

4、* 一個源文件由一個或多個函數(shù)組成,是一個獨立編譯單元。一個C程序由一個或多個源文件組成;C程序執(zhí)行總是從main函數(shù)開始,調(diào)用其他函數(shù)后流程回到main。函數(shù)不能嵌套定義,但可互相調(diào)用。注意不能調(diào)用main函數(shù)。 函數(shù)的分類 1.函數(shù)參數(shù)形式無參函數(shù)有參函數(shù)2. 從用戶使用的角度分標準函數(shù)(庫函數(shù))用戶自己定義的函數(shù)庫函數(shù)編譯系統(tǒng)提供的已設(shè)計好的函數(shù),用戶只需調(diào)用而無需要去實現(xiàn)它(scanf,printf,getchar,putchar等)。用戶自定義函數(shù)程序員自己定義和設(shè)計的函數(shù)。有參函數(shù)例(輸出兩數(shù)中大者)#include main( ) int max(int x,int y); in

5、t 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);無參函數(shù)例main() print_star(); print_message(); print_star() ; print_star() prinf(“* n”); print_message() prinf(“ Hello! n ”); 7.2 怎樣定義函數(shù) 例如: print_message() printf(“Hello! n

6、 ”);二、 有參函數(shù)的定義形式類型標識符 函數(shù)名(形參表列) 說明部分 語句 有參數(shù)傳遞例如:求x和y二者中大者int max (int x, int y) /*x,y為形參*/ int z; /*函數(shù)體中變量的說明*/ z=xy?x:y; return (z) ; /*將z的值作為函數(shù)返回值*/類型標識符 函數(shù)名() 說明部分 語句 無參數(shù)傳遞一、 無參函數(shù)的定義形式三、 空函數(shù)的定義形式類型標識符 函數(shù)名( ) 功能:調(diào)用后什么也不做。用處:建立程序結(jié)構(gòu),在需要時補充功能。 例如:dummy() 若無參數(shù),類型標識符寫void或不寫函數(shù)返回值的類型,若不說明類型,默認為整型。是被初始化的

7、內(nèi)部變量,壽命和可見性僅限于函數(shù)內(nèi)部四、 形式參數(shù)和實際參數(shù)形式參數(shù)定義函數(shù)時函數(shù)名后面括弧中的變量名,簡稱形參。實際參數(shù)調(diào)用函數(shù)時函數(shù)名后面括弧中的表達式,簡稱實參。 c=max(a, b); - 實參:在運行時 把函數(shù)的 max(int x,int y) 把值傳給函數(shù)。 結(jié)果賦給 函數(shù)名 returu (z); 形參:通知系統(tǒng) 要預留內(nèi)存位置。 上例中形參與實參、函數(shù)名與返回值之間的關(guān)系main( ) int max( int x, int y); int a,b,c; scanf (“%d,%d,&a,&b); c=max(a,b); printf(“Max is %d”,c);int

8、max( int x, int y) int z; z=xy? x:y; return(z);形參表實參表函數(shù)的返回值語句return將被調(diào)函數(shù)的一個確定值帶回主調(diào)函數(shù)。return(函數(shù)返回值); 或 return 函數(shù)返回值; 通過函數(shù)調(diào)用使主調(diào)函數(shù)得到一個確定的值五、函數(shù)的返回值main( ) int max( int 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ù)的返回

9、值是5,因此c=5有確定值的常量、變量或表達式函數(shù)不加類型說明按整型處理函數(shù)和return類型不一致以函數(shù)類型為準。函數(shù)不返回值定義為void六、函數(shù)值的類型 void print_star() main( ) int max( int 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);小結(jié)int Power ( int iBase, int iExponent )返回類型: int 函

10、數(shù)名:Power形式參數(shù): iBase,iExponent形式參數(shù)的數(shù)值由實際參數(shù)決定。注意:int Power ( int iBase, int iExponent )誰是被定義的函數(shù)?誰是參數(shù)?第一個int的作用是什么?后兩個int的作用是什么?函數(shù)的使用者應該明確指明什么,才能使用函數(shù)?調(diào)用函數(shù)就是使用函數(shù)。調(diào)用函數(shù)之前,必須首先聲明函數(shù)。聲明函數(shù)就是聲明:函數(shù)名、函數(shù)返回值的類型和參數(shù)的類型。例:int Power(int, int);7.3 調(diào)用函數(shù) 一、函數(shù)調(diào)用的一般形式 函數(shù)名(實際參數(shù)表) 有參數(shù)函數(shù)無參數(shù)函數(shù) 函數(shù)名() void print_star()printf(“*”

11、);main( ) int a,b,c; 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);二、函數(shù)調(diào)用的具體方式1.函數(shù)調(diào)用作為一個語句 函數(shù)名(實際參數(shù)表);調(diào)用可忽略或沒有返回值的函數(shù)(如:scanf函數(shù)和printf函數(shù)) 2.函數(shù)調(diào)用出現(xiàn)在表達式中變量名=函數(shù)表達式調(diào)用帶返回值的函數(shù),其返回值參加表達式運算。無返回值函數(shù)的調(diào)用,不能出現(xiàn)在表達式中3.函數(shù)參數(shù) 函數(shù)調(diào)用作為一個函數(shù)的參數(shù)。如:m=ma

12、x(a,max(b,c) 在程序編譯階段,對調(diào)用函數(shù)的合法性進行全面檢查。如沒有函數(shù)聲明,編譯到包含函數(shù)調(diào)用的語句時(如xx(a,b)),編譯系統(tǒng)不知道xx是函數(shù)名,也無法判斷實參(a,b)的類型和個數(shù)是否正確,無法進行正確性的檢查。只有在運行時才會發(fā)現(xiàn)實參與形參的類型或個數(shù)不一致,出現(xiàn)運行錯誤。 7.4、對被調(diào)用函數(shù)的聲明和函數(shù)原型 對被調(diào)用函數(shù)說明的前提條件必須是已存在的函數(shù),如用戶自定義函數(shù)或庫函數(shù)。2.被調(diào)用函數(shù)是用戶自定義函數(shù)的函數(shù)說明主調(diào)函數(shù)和被調(diào)用函數(shù)在同一文件中,在主調(diào)函數(shù)中說明被調(diào)函數(shù)類型。在C語言中,以上的函數(shù)說明稱為函數(shù)原型。 /*定義add函數(shù)*/float add (

13、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) ; printf(“ sum is %f ”, c );對被調(diào)用函數(shù)的說明作為表達式被調(diào)用3. 被調(diào)用函數(shù)是庫函數(shù)的函數(shù)說明文件開頭用#include命令將調(diào)用庫函數(shù)時需用到的信息“包含”到文件中(對這些庫函數(shù)的原型說明全部都寫在對應的頭文件里)。 常用的頭文件:# include “stdio.h” # include “math.

14、h”# include “string.h”4.省略被調(diào)用函數(shù)聲明的三種情況 float add (float x,float y) float z; z=x+y; return (z); main() float a, b, c; scanf(“ %f, %f”, &a, &b); c=add(a,b) ; printf(“ sum is %f ”, c );(1)被調(diào)函數(shù)定義在主函數(shù)前(2)函數(shù)返回值為整型或字符型,系統(tǒng)按整型處理。main( ) int a,b,c; scanf (“%d,%d”,&a,&b); c=max(a,b); printf(“Max is %d”,c); max

15、(int x,int y) int z; z=xy? x:y; return(z); 無函數(shù)說明整型函數(shù)所有函數(shù)定義前,在函數(shù)的外部已說明函數(shù)類型。char letter( char,char);float f(float,float );int i(float,float);main( ) .char letter (char c1,char c2)float f(float x,float y)int i(float,float)在所有函數(shù)之前說明函數(shù)類型此處不必說明定義函數(shù)letter、f和i復習函數(shù)的要素:名字、返回值、參數(shù)和代碼定義函數(shù):編寫代碼聲明函數(shù):聲明名字、參數(shù)類型和返回值類

16、型調(diào)用函數(shù):給出名字和實際參數(shù),如果有返回值則保存。main() int i; long t; t=1; for(i=1; i=n; i+) t=t*i; printf(“n!=%ldn”,t); 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);例1:編寫函數(shù),求n!。例題1:求1+2+3+.+100的和。main() int

17、i,s=0; for (i=1;i=100;i+) s=s+i; printf(“s=%d”,s);例2:編寫函數(shù),求1+2+3+.n。int mm(int x) int t=0; int i; for(i=1;i=x,i+) t=t+i; return (t); main() int n; int s; scanf(“%d”,&n); s=mm(n); printf(“%d”,s);執(zhí)行細節(jié) - 步驟 程序?qū)闹骱瘮?shù)開始執(zhí)行當發(fā)生函數(shù)調(diào)用時,主調(diào)用函數(shù)暫停實際函數(shù)的值將被復制給形式參數(shù)(不需要任何語句,程序自動做該項工作).被調(diào)用函數(shù)執(zhí)行遇到返回語句時,被調(diào)用函數(shù)將結(jié)果返回給主調(diào)用函數(shù)主調(diào)用

18、函數(shù)恢復執(zhí)行執(zhí)行細節(jié)-存儲分配被調(diào)用函數(shù)執(zhí)行前,系統(tǒng)為其變量分配內(nèi)存空間(包括形式參數(shù))。實際參數(shù)的值被復制給形式參數(shù) (值傳遞).當被調(diào)用函數(shù)結(jié)束執(zhí)行后,內(nèi)存空間將被釋放,下次調(diào)用時重新分配。例:你可以判斷出下面程序的結(jié)果嗎?程序的執(zhí)行過程是怎樣的?void Swap(int iA, int iB)int iTemp;iTemp=iA;iA=iB;iB=iTemp;main()int iFirst=13, iSecond=27;Swap(iFirst, iSecond);printf(niA is %d, iFirst);printf(niB is %d, iSecond);main()in

19、t iFirst=13;int iSecond=27;Swap(iFirst, iSecond);printf(niFirst is %d, iFirst);printf(niSecond is %d, iSecond);iFirst=13iSecond=27iFirst=13iSecond=27iB=27iA=13iTempmain()int iFirst=13;int iSecond=27;Swap(iFirst, iSecond);printf(niFirst is %d, iFirst);printf(niSecond is %d, iSecond);void Swap(int iA,

20、 int iB)int iTemp;iTemp=iA;iA=iB;iB=iTemp;iFirst=13iSecond=27iB=27iA=13iTempiFirst=13iSecond=27iB=13iA=27iTempmain()int iFirst=13;int iSecond=27;Swap(iFirst, iSecond);printf(niFirst is %d, iFirst);printf(niSecond is %d, iSecond);iFirst=13iSecond=27總結(jié)參數(shù)傳遞的時候,實際參數(shù)的數(shù)值復制給形式參數(shù)形式參數(shù)是實際參數(shù)的“復印件”。修改形式參數(shù),不影響實際

21、參數(shù)的數(shù)值。這一機制稱為:call-by-value7.5 函數(shù)的嵌套調(diào)用C語言不能嵌套定義,但可以嵌套調(diào)用。嵌套定義:在定義一個函數(shù)時,該函數(shù)體內(nèi)包含 另一個函數(shù)的定義。一.嵌套調(diào)用調(diào)用一個函數(shù)的過程中,又調(diào)用另一個函數(shù)。main函數(shù)調(diào)用A函數(shù)結(jié) 束A函數(shù)調(diào)用B函數(shù)B函數(shù)192873456例題:編寫函數(shù),求1!+3!+5!+.k! 其中k是小于9的奇數(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;

22、int i; for(i=1;i1)main() double jx(int m) int n; double t; printf(“Input n :”); scanf(“%d”,&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; 數(shù)組作參數(shù)的時候,函數(shù)可以使用數(shù)組元素的“原件”。數(shù)組的存儲原理決定了這一效果。例: int iListLENGTH; 7.7 數(shù)組作為函數(shù)參數(shù) 數(shù)組的存儲原理100010021004100610081020304050iLi

23、st0iList1iList2iList3iList4數(shù)組元素的地址如果數(shù)組iList存儲在1000開始的內(nèi)存空間,那么1000是iList0的地址,1002是iList1的地址,1004是iList2的地址。請問,iListi的地址?1000+i*2計算機訪問數(shù)組元素的原理計算機根據(jù)數(shù)組的首地址、元素的下標和數(shù)據(jù)元素在內(nèi)存的長度,計算元素的地址,然后根據(jù)地址訪問數(shù)組元素。元素的下標由程序員指定。元素的類型是預先聲明的。數(shù)組的首地址保存在數(shù)組名中。數(shù)組名就是數(shù)組的首地址。計算機訪問數(shù)組元素的原理訪問iListi,就是訪問地址為iList+i*sizeof(int)其中,iList是首地址,i是

24、元素的下標,sizeof(int) 是元素在內(nèi)存的長度(字節(jié)為單位)。問題如果iArray也是數(shù)組名,而且iArray中存儲的地址與iList相同,那么iArrayi與iListi有什么關(guān)系?答:它們是同一數(shù)據(jù)元素。一、數(shù)組元素做函數(shù)實參例題:有兩個數(shù)組A,B各有10個元素,將它們逐個對應相比,如果A數(shù)組中的元素大于B數(shù)組中相應的元素數(shù)目多于B數(shù)組中的元素大于A數(shù)組中相應的元素數(shù)目,則認為A數(shù)組大于B數(shù)組,并分別統(tǒng)計出兩個數(shù)組相應元素大于,小于和等于的個數(shù)。程序設(shè)計:1、函數(shù)large(x, y) :比較兩個數(shù)組元素的 大小。 返回值 flag=1 當 xy0 當 x=y-1 當 xy) fl

25、ag=1;else if(x: 4 =: 1 : 5 a bmain ( ) int a10, b10, i, n=0, m=0, k=0;for ( i=0; i10; i+) scanf(“%d”, &ai);for ( i=0;i10; i+) scanf(“%d”, &bi);for (i=0; ik) printf(“abn”); else if (nk) printf(“abn”); else printf(“a=bn”); 二、數(shù)組名做函數(shù)參數(shù)數(shù)組名代表數(shù)組在內(nèi)存中存放區(qū)域首地址。數(shù)組名作函數(shù)參數(shù)實現(xiàn)大量數(shù)據(jù)傳遞。數(shù)組名做函數(shù)的參數(shù)方法:在主調(diào)函數(shù)和被調(diào)函數(shù)中分別定義數(shù)組; 實參

26、數(shù)組和形參數(shù)組類型應一致;實參數(shù)組和形參數(shù)組大小不一定一致,形參數(shù) 組可以不指定大?。ㄟ@里指一維數(shù)組)。說明數(shù)組名做函數(shù)的實參和形參時是“地址傳遞”。形參數(shù)組各元素的值發(fā)生變化會使實參數(shù)組各元素值發(fā)生同樣的變化。例1:編寫函數(shù),求一維數(shù)組中存放學生成績的平均值。float aver( float a , int n ) int i; float pj,sum=0; for(i=0;in;i+) sum=sum+ai; pj=sum/n; return(pj); main() float xs10,pjf; int i; for(i=0;i10;i+) scanf(“%f”,&xsi); pjf

27、=aver( xs ,10); printf(“pjf=%f”,pjf); 一維數(shù)組作函數(shù)參數(shù)時形參數(shù)組可不指定大小一維數(shù)組的大小把一維數(shù)組xs的首地址傳給形參數(shù)組a例2:對數(shù)組中10個整數(shù)按由小到大排序。void sort (int array , int n) int v, j, t; for (i=0; in-1; i+) for (j=i+1; jn; j+) if (arrayjarrayk) t=arrayk; arrayk=arrayi; arrayi=t; main ( ) int a10, i; for (i=0; i10; i+) scanf (“ %d ”,&ai); s

28、ort(a, 10); for (i=0; i10; i+) printf (“ %d ”, ai); 由于地址傳遞,實參數(shù)組 a 改變例3:寫一函數(shù),使給定的一個二維整形數(shù)組(3*3)轉(zhuǎn)置,即行列互換。void xx(int a33 ) int i,j; for(i=0;i3;i+) for(j=0;j3;j+) printf(“%d”,aji;) printf(“n”); main() int a33,i,j; for(i=0;i3;i+) for(j=0;j3;j+) scanf(“%d”,&aij); xx(a);二維數(shù)組名做函數(shù)參數(shù),可以指定每一維的大小或省略第一維的大小如 : in

29、t array 310; 或 int array 10;但 int array 3 ; 和 int array ; 總結(jié)當數(shù)組的名字作為形式參數(shù)時,被復制的是數(shù)組的首地址函數(shù)根據(jù)首地址處理的是數(shù)組元素的“原件”,而不是“復印件”。7.8 局部變量和全局變量在函數(shù)內(nèi)部或復合語句內(nèi)部定義的變量作用域:函數(shù)內(nèi)或復合語句內(nèi)。 局部變量主函數(shù) main 定義的變量只在主函數(shù)中有效,主函數(shù)不能使用其它函數(shù)定義的變量。不同函數(shù)中的同名變量互不影響。形參也是局部變量。在本函數(shù)中a、b、c有效f1(int a) int b,c; 在本函數(shù)中a、b、c、d有效但與f1函數(shù)中的a、b、c不同f1(int a,int

30、 b) int d,c; 在本函數(shù)中m、n有效main() int m,n; 例: main() int a=10,b=10; int c c=a+b; a、b在此 c在此范圍 范圍內(nèi)有效 內(nèi)有效 . 在函數(shù)外部定義的變量(也稱外部變量) 。 作用域:可以為本文件中所有的函數(shù)公用。全局變量從定義變量的位置開始到本文件結(jié)束,這段程序中的函數(shù)可直接使用外部變量。如果在定義點之前的函數(shù)想使用外部 變量,則應該在該函數(shù)中用關(guān)鍵字 extern 作“外部變量”說明。如果在同一源文件中,外部變量和局部變量同名,則在局部變量的作用范圍內(nèi),外部變量不起作用。優(yōu)點增加了函數(shù)間數(shù)據(jù)聯(lián)系同一文件中的一些函數(shù)引用全局

31、變量,當某個函數(shù)中改變了全局變量的值,其它函數(shù)中的全局變量值也隨之改變。函數(shù)可以得到多個返回值缺點全局 變量在程序的全部執(zhí)行過程中都占用存儲單元。使用全局變量不符合程序設(shè)計中要求模塊間“強內(nèi)聚性、弱偶合性”的原則。使用全局變量過多,會降低程序的可讀性和可維護性。變量的存儲類別 1.靜態(tài)存儲方式和動態(tài)存儲方式靜態(tài)存儲方式:程序運行期間分配固定存儲 空間的方式。動態(tài)存儲方式:程序運行期間根據(jù)需要進行 動態(tài)的分配存儲空間的方式。程序區(qū)靜態(tài)存儲區(qū)動態(tài)存儲區(qū)全局變量,局部靜態(tài)變量形式參數(shù)局部變量(自動)函數(shù)調(diào)用的現(xiàn)場保護和返回地址7.9 變量的存儲方式和生存期2.靜態(tài)存儲變量和動態(tài)存儲變量靜態(tài)存儲變量:

32、用靜態(tài)存儲方式存儲的變量。動態(tài)存儲變量:用動態(tài)存儲方式存儲的變量。特點:在 靜態(tài)存儲區(qū)分配存儲單元,整個程序 運行期間都不釋放。 特點:函數(shù)開始調(diào)用時為變量分配存儲空間, 函數(shù)結(jié)束時釋放這些空間。一個程序兩 次調(diào)用同一函數(shù),其中同一個局部變量 的內(nèi)存地址可能不同。C語言變量的屬性:數(shù)據(jù)類型 存儲類型存儲類型:數(shù)據(jù)在內(nèi)存中的存儲方式。 即靜態(tài)存儲方式和動態(tài)存儲方式。3.變量的屬性及其定義數(shù)據(jù)類型:整型,實型,字符型存儲分類符:auto (自動的)、register(寄存器的)static (靜態(tài)的)、 extern(外部的)定義變量的一般形式:存儲分類符 類型標識符 變量名;如:auto int

33、 a; static int b; register int d;auto(自動的)例如:auto int a; 4.變量的存儲類型auto說明局部變量,該局部變量是自動變量; 自動變量存放在動態(tài)存儲區(qū),屬于動態(tài)存儲變量; 變量作用域是其所在的函數(shù)內(nèi)部。說明:在一個函數(shù)內(nèi)如果局部變量不作存儲類 型說明,均為自動變量;形式參數(shù)缺省存儲類型是auto,但不能 將auto加在形參說明之前。 如:int b, c=3 等價于 auto int b, c=3; 如:int max(auto int x, auto int y) static(靜態(tài)的)static可用于說明局部變量局部靜態(tài)變量全局變量外部靜態(tài)變量局部靜態(tài)變量 作用域僅限于定義它的函數(shù)內(nèi)部 。存放在靜態(tài)存儲區(qū),整個程序運行期間都不釋放。編譯時賦初值,每次調(diào)用不再賦初值,只保留調(diào)用結(jié)束時變量的值。 自動變量調(diào)用一次,重新賦值一次。局部靜態(tài)變量不賦初值,編譯時自動賦0。 自動變量不賦初值,其值不確定。例如:打印1!5!int f

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論