函數(shù)及變量存儲類型PPT課件_第1頁
函數(shù)及變量存儲類型PPT課件_第2頁
函數(shù)及變量存儲類型PPT課件_第3頁
函數(shù)及變量存儲類型PPT課件_第4頁
函數(shù)及變量存儲類型PPT課件_第5頁
已閱讀5頁,還剩44頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、前言前言結(jié)構(gòu)化程序的設(shè)計思想: 整個程序是由一個主程序和若干子程序組成。 主程序起著總控作用,每個子程序完成一相對獨立的功能。 這種自上而下逐步細(xì)化的模塊化設(shè)計方法就是結(jié)構(gòu)化程序設(shè)計方法。 C語言是函數(shù)式語言,程序員可利用函數(shù)來實施結(jié)構(gòu)化程序設(shè)計。 C程序結(jié)構(gòu)示意圖如右圖。第1頁/共49頁函數(shù)概述函數(shù)概述 函數(shù)是構(gòu)成程序的基本模塊。 一個C C程序一般由多個函數(shù)組成,其中有且僅有一個名為mainmain的主函數(shù),其余為被mainmain函數(shù)或其它函數(shù)調(diào)用的函數(shù)。 C C程序總是從mainmain函數(shù)開始執(zhí)行。 被調(diào)用的函數(shù)分為兩類:系統(tǒng)提供的標(biāo)準(zhǔn)函數(shù)、用戶自定義函數(shù)。 例1 1:用戶自定義函數(shù)

2、求數(shù)的平方第2頁/共49頁例例1 1:用戶自定義函數(shù):用戶自定義函數(shù)求數(shù)的平求數(shù)的平方方 #include long square(long x); /*注1*/void main( ) long in_num, result; printf( “Input an integer:”); scanf( “%ld”, &in_num); result=square(in_num); /*注2*/ printf(“nThe square of %1d is %ld”, in_num, result);long square(long x) long x_square; x_square=x

3、*x; return x_square;程序分析: 1.注1語句是個函數(shù)聲明。 2.注2調(diào)用square函數(shù)并將變量in_num作為實參傳遞給它。 3.long square(long x)開始函數(shù)定義。運行結(jié)果:Input an integer:100The square of 100 is 10000第3頁/共49頁函數(shù)的定義函數(shù)的定義函數(shù)定義的一般形式:(1)無參函數(shù): (示例)存儲類型標(biāo)識符 類型標(biāo)識符 函數(shù)名()說明部分 語句部分(2)有參函數(shù)(示例)存儲類型標(biāo)識符 類型標(biāo)識符 函數(shù)名(形式參數(shù)表列及類型說明)說明部分 語句部分(3)空函數(shù)(示例)存儲類型標(biāo)識符 類型標(biāo)識符 函數(shù)名(

4、) 例2: 計算X的n次方,其中 X=2和-3,n=19.第4頁/共49頁函數(shù)的定義函數(shù)的定義函數(shù)定義的一般形式:(1)無參函數(shù): (示例)存儲類型標(biāo)識符 類型標(biāo)識符 函數(shù)名()說明部分 語句部分(2)有參函數(shù)(示例)存儲類型標(biāo)識符 類型標(biāo)識符 函數(shù)名(形式參數(shù)表列及類型說明)說明部分 語句部分(3)空函數(shù)(示例)存儲類型標(biāo)識符 類型標(biāo)識符 函數(shù)名() 例2: 計算X的n次方,其中 X=2和-3,n=19.第5頁/共49頁函數(shù)的定義函數(shù)的定義函數(shù)定義的一般形式:(1)無參函數(shù): (示例)存儲類型標(biāo)識符 類型標(biāo)識符 函數(shù)名()說明部分 語句部分(2)有參函數(shù)(示例)存儲類型標(biāo)識符 類型標(biāo)識符 函

5、數(shù)名(形式參數(shù)表列及類型說明)說明部分 語句部分(3)空函數(shù)(示例)存儲類型標(biāo)識符 類型標(biāo)識符 函數(shù)名() 例2: 計算X的n次方,其中 X=2和-3,n=19.第6頁/共49頁函數(shù)的定義函數(shù)的定義函數(shù)定義的一般形式:(1)無參函數(shù): (示例)存儲類型標(biāo)識符 類型標(biāo)識符 函數(shù)名()說明部分 語句部分(2)有參函數(shù)(示例)存儲類型標(biāo)識符 類型標(biāo)識符 函數(shù)名(形式參數(shù)表列及類型說明)說明部分 語句部分(3)空函數(shù)(示例)存儲類型標(biāo)識符 類型標(biāo)識符 函數(shù)名() 例2: 計算X的n次方,其中 X=2和-3,n=19.第7頁/共49頁函數(shù)的定義函數(shù)的定義函數(shù)定義的一般形式:(1)無參函數(shù): (示例)存儲

6、類型標(biāo)識符 類型標(biāo)識符 函數(shù)名()說明部分 語句部分(2)有參函數(shù)(示例)存儲類型標(biāo)識符 類型標(biāo)識符 函數(shù)名(形式參數(shù)表列及類型說明)說明部分 語句部分(3)空函數(shù)(示例)存儲類型標(biāo)識符 類型標(biāo)識符 函數(shù)名() 例2: 計算X的n次方,其中 X=2和-3,n=19.第8頁/共49頁函數(shù)的定義函數(shù)的定義函數(shù)定義的一般形式:(1)無參函數(shù): (示例)存儲類型標(biāo)識符 類型標(biāo)識符 函數(shù)名()說明部分 語句部分(2)有參函數(shù)(示例)存儲類型標(biāo)識符 類型標(biāo)識符 函數(shù)名(形式參數(shù)表列及類型說明)說明部分 語句部分(3)空函數(shù)(示例)存儲類型標(biāo)識符 類型標(biāo)識符 函數(shù)名() 例2: 計算X的n次方,其中 X=2

7、和-3,n=19.第9頁/共49頁函數(shù)的定義函數(shù)的定義函數(shù)定義的一般形式:(1)無參函數(shù): (示例)存儲類型標(biāo)識符 類型標(biāo)識符 函數(shù)名()說明部分 語句部分(2)有參函數(shù)(示例)存儲類型標(biāo)識符 類型標(biāo)識符 函數(shù)名(形式參數(shù)表列及類型說明)說明部分 語句部分(3)空函數(shù)(示例)存儲類型標(biāo)識符 類型標(biāo)識符 函數(shù)名() 例2: 計算X的n次方,其中 X=2和-3,n=19.第10頁/共49頁函數(shù)的定義函數(shù)的定義函數(shù)定義的一般形式:(1)無參函數(shù): (示例)存儲類型標(biāo)識符 類型標(biāo)識符 函數(shù)名()說明部分 語句部分(2)有參函數(shù)(示例)存儲類型標(biāo)識符 類型標(biāo)識符 函數(shù)名(形式參數(shù)表列及類型說明)說明部分

8、 語句部分(3)空函數(shù)(示例)存儲類型標(biāo)識符 類型標(biāo)識符 函數(shù)名() 例2: 計算X的n次方,其中 X=2和-3,n=19.第11頁/共49頁函數(shù)的定義函數(shù)的定義函數(shù)定義的一般形式:(1)無參函數(shù): (示例)存儲類型標(biāo)識符 類型標(biāo)識符 函數(shù)名()說明部分 語句部分(2)有參函數(shù)(示例)存儲類型標(biāo)識符 類型標(biāo)識符 函數(shù)名(形式參數(shù)表列及類型說明)說明部分 語句部分(3)空函數(shù)(示例)存儲類型標(biāo)識符 類型標(biāo)識符 函數(shù)名() 例2: 計算X的n次方,其中 X=2和-3,n=19.第12頁/共49頁函數(shù)的定義函數(shù)的定義函數(shù)定義的一般形式:(1)無參函數(shù): (示例)存儲類型標(biāo)識符 類型標(biāo)識符 函數(shù)名()

9、說明部分 語句部分(2)有參函數(shù)(示例)存儲類型標(biāo)識符 類型標(biāo)識符 函數(shù)名(形式參數(shù)表列及類型說明)說明部分 語句部分(3)空函數(shù)(示例)存儲類型標(biāo)識符 類型標(biāo)識符 函數(shù)名() 例2: 計算X的n次方,其中 X=2和-3,n=19.第13頁/共49頁函數(shù)的定義函數(shù)的定義函數(shù)定義的一般形式:(1)無參函數(shù): (示例)存儲類型標(biāo)識符 類型標(biāo)識符 函數(shù)名()說明部分 語句部分(2)有參函數(shù)(示例)存儲類型標(biāo)識符 類型標(biāo)識符 函數(shù)名(形式參數(shù)表列及類型說明)說明部分 語句部分(3)空函數(shù)(示例)存儲類型標(biāo)識符 類型標(biāo)識符 函數(shù)名() 例2: 計算X的n次方,其中 X=2和-3,n=19.第14頁/共4

10、9頁函數(shù)的定義函數(shù)的定義函數(shù)定義的一般形式:(1)無參函數(shù): (示例)存儲類型標(biāo)識符 類型標(biāo)識符 函數(shù)名()說明部分 語句部分(2)有參函數(shù)(示例)存儲類型標(biāo)識符 類型標(biāo)識符 函數(shù)名(形式參數(shù)表列及類型說明)說明部分 語句部分(3)空函數(shù)(示例)存儲類型標(biāo)識符 類型標(biāo)識符 函數(shù)名() 例2: 計算X的n次方,其中 X=2和-3,n=19.第15頁/共49頁函數(shù)的定義函數(shù)的定義函數(shù)定義的一般形式:(1)無參函數(shù): (示例)存儲類型標(biāo)識符 類型標(biāo)識符 函數(shù)名()說明部分 語句部分(2)有參函數(shù)(示例)存儲類型標(biāo)識符 類型標(biāo)識符 函數(shù)名(形式參數(shù)表列及類型說明)說明部分 語句部分(3)空函數(shù)(示例)

11、存儲類型標(biāo)識符 類型標(biāo)識符 函數(shù)名() 例2: 計算X的n次方,其中 X=2和-3,n=19.第16頁/共49頁函數(shù)的定義函數(shù)的定義函數(shù)定義的一般形式:(1)無參函數(shù): (示例)存儲類型標(biāo)識符 類型標(biāo)識符 函數(shù)名()說明部分 語句部分(2)有參函數(shù)(示例)存儲類型標(biāo)識符 類型標(biāo)識符 函數(shù)名(形式參數(shù)表列及類型說明)說明部分 語句部分(3)空函數(shù)(示例)存儲類型標(biāo)識符 類型標(biāo)識符 函數(shù)名() 例2: 計算X的n次方,其中 X=2和-3,n=19.第17頁/共49頁函數(shù)的定義函數(shù)的定義函數(shù)定義的一般形式:(1)無參函數(shù): (示例)存儲類型標(biāo)識符 類型標(biāo)識符 函數(shù)名()說明部分 語句部分(2)有參函

12、數(shù)(示例)存儲類型標(biāo)識符 類型標(biāo)識符 函數(shù)名(形式參數(shù)表列及類型說明)說明部分 語句部分(3)空函數(shù)(示例)存儲類型標(biāo)識符 類型標(biāo)識符 函數(shù)名() 例2: 計算X的n次方,其中 X=2和-3,n=19.第18頁/共49頁函數(shù)的定義函數(shù)的定義函數(shù)定義的一般形式:(1)無參函數(shù): (示例)存儲類型標(biāo)識符 類型標(biāo)識符 函數(shù)名()說明部分 語句部分(2)有參函數(shù)(示例)存儲類型標(biāo)識符 類型標(biāo)識符 函數(shù)名(形式參數(shù)表列及類型說明)說明部分 語句部分(3)空函數(shù)(示例)存儲類型標(biāo)識符 類型標(biāo)識符 函數(shù)名() 例2: 計算X的n次方,其中 X=2和-3,n=19.第19頁/共49頁函數(shù)的定義函數(shù)的定義函數(shù)定

13、義的一般形式:(1)無參函數(shù): (示例)存儲類型標(biāo)識符 類型標(biāo)識符 函數(shù)名()說明部分 語句部分(2)有參函數(shù)(示例)存儲類型標(biāo)識符 類型標(biāo)識符 函數(shù)名(形式參數(shù)表列及類型說明)說明部分 語句部分(3)空函數(shù)(示例)存儲類型標(biāo)識符 類型標(biāo)識符 函數(shù)名() 例2: 計算X的n次方,其中 X=2和-3,n=19.第20頁/共49頁void main( ) int i; double power(int x, int n); for(i=1;i10;i+) printf( “power(2,%d)=%8.4f, power(-3,%d) =%11.4fn”, i, power(2,i), i, po

14、wer(-3,i);double power(int x, int n) int i; double p; p=1; for(i=1;i=n;i+) p*=x; return(p);輸出結(jié)果:power(2,1)= 2.0000, power(-3,1)= -3.0000power(2,2)= 4.0000 , power(-3,1)= 9.0000power(2,3)= 8.0000 , power(-3,1)= -27.0000power(2,4)= 16.0000 , power(-3,1)= 81.0000power(2,5)= 32.0000 , power(-3,1)= -243.

15、0000power(2,6)= 64.0000 , power(-3,1)= 729.0000power(2,7)= 128.0000 , power(-3,1)= -2187.0000power(2,8)= 256.0000 , power(-3,1)= 6561.0000power(2,9)= 512.0000 , power(-3,1)= -196833.0000例例2:計算:計算x的的n次方次方第21頁/共49頁函數(shù)的聲明函數(shù)的聲明 在調(diào)用函數(shù)之前必須作函數(shù)聲明。函數(shù)聲明的一般形式: 存儲類型標(biāo)識符 類型標(biāo)識符 函數(shù)名(形參表)說明: (1)外部函數(shù)聲明時可指定exturn或缺省,靜態(tài)

16、函數(shù)聲明時必須指定static。 (2)參數(shù)表可只列出參數(shù)的類型名而不需給出參數(shù)名。對無參函數(shù),聲明時參數(shù)表應(yīng)指定為void。注意: (1)函數(shù)聲明可位于調(diào)用函數(shù)體內(nèi)或函數(shù)體外(一般位于程序開頭部分)。 (2)程序中調(diào)用標(biāo)準(zhǔn)庫函數(shù)時,只需用#include預(yù)處理控制包含所需的頭文件,而不需寫函數(shù)聲明。第22頁/共49頁函數(shù)的調(diào)用函數(shù)的調(diào)用函數(shù)調(diào)用的一般形式: 函數(shù)名(實參表列)說明: (1)實參與形參的個數(shù)相等,類型一致。實參與形參的數(shù)據(jù)傳遞是“值傳遞”。 (2)在函數(shù)調(diào)用時形參才被分配內(nèi)存單元。調(diào)用結(jié)束后,單元即被釋放。 (3)函數(shù)可以有以下三種調(diào)用方式: 函數(shù)語句。 例printstar(

17、 ); 函數(shù)表達式。 例c=2*max(a,b); 函數(shù)參數(shù)。 例m=max(a,max(b,c); (4)返回值通過return語句獲得,不需返回值,可不要return語句。為了明確表示“不返回值”,可用“void”定義“無類型”。第23頁/共49頁函數(shù)的調(diào)用(續(xù))函數(shù)的調(diào)用(續(xù))形參與實參的數(shù)值傳遞: : 參數(shù)的傳遞方式是“單向值傳遞”,形參和實參各自有不同的存儲單元。 (例3 3)注意:(1 1)C C語言中可以定義參數(shù)數(shù)目可變的函數(shù)。例:printf(printf(格式字符串,參數(shù)1 1,參數(shù)2 2,);(2 2)函數(shù)調(diào)用時,參數(shù)的求值順序由具體系統(tǒng)確定。多數(shù)編譯程序在計算參數(shù)值時按從

18、右至左的順序進行。 例如: 若i=3,i=3,則printf(%d,%d,i,i+)printf(%d,%d,i,i+)的結(jié)果是4,34,3。第24頁/共49頁例3:形參與實參的數(shù)值傳遞#include void swap(int x, int y) int z; z=x; x=y; y=z;void main( ) int a, b; a=10; b=20; swap(a, b); printf( “a=%dtb=%dn”, a, b);變量跟蹤變量跟蹤main函數(shù)函數(shù) a bswap函數(shù):函數(shù): x y z (形參)(形參)(形參)(形參)第25頁/共49頁函數(shù)的嵌套函數(shù)的嵌套 C C語言

19、規(guī)定不能嵌套定義函數(shù),但可以嵌套調(diào)用函數(shù)。即在調(diào)用一個函數(shù)的過程中,又調(diào)用另一個函數(shù)。例4 4: : 輸入三個數(shù),計算以它們?yōu)閮傻?、半徑和高所形成的圓臺體積。第26頁/共49頁例例4:計算圓臺體積:計算圓臺體積#include#include#define PI 3.1416float area(float r) return (PI*r*r);float volume(float r1,float r2,float h) float v; v=h*(area(r1)+area(r2)+sqrt( area(r1)*area(r2)/3.0; return (v);void main( ) f

20、loat r1, r2, h; printf( “Please input r1 r2 h:n”); scanf( “%f %f %f”, &r1, &r2, &h); printf( “The volume is %fn”, volume(r1,r2,h);輸出結(jié)果:輸出結(jié)果:第27頁/共49頁函數(shù)的遞歸函數(shù)的遞歸遞歸調(diào)用,即在調(diào)用一個函數(shù)的過程中又出現(xiàn)直接或間接地調(diào)用該函數(shù)自身。遞歸是一種特殊的解決問題的方法,要用遞歸解決問題,應(yīng)滿足: 原問題可轉(zhuǎn)化為一個新的問題,而新問題的解決方法和原問題相同,但所處理的對象不同,且有規(guī)律變化; 問題通過轉(zhuǎn)化最終能得到解決; 應(yīng)有

21、使遞歸結(jié)束的條件。例5 5:用遞歸方法求n!n!例6 6:用遞歸方法以字符串形式輸出一整數(shù)。第28頁/共49頁例例5 5:用遞歸方法求:用遞歸方法求n!n!long fac(int n) long f; if (n0) printf( “data error!” ); else if (n = = 0) f = 1; else f = n*fac(n-1); return(f);void main( ) int n; long y; printf( “Input a number:” ); scanf( “%d” , &n); y=fac(n); printf( “%d!=%dn”,

22、n, y);第29頁/共49頁例例6 6:用函數(shù)遞歸方法以字符串:用函數(shù)遞歸方法以字符串形式輸出一整數(shù)形式輸出一整數(shù) #include void printd(int n) if (n0) putchar(-); n=-n; if (n/10) printd(n/10); putchar(n%10+0);void main( ) int number; scanf(“%d”, &number); printd(number);以輸入以輸入123和和-234為例運行:為例運行:輸出結(jié)果:輸出結(jié)果:第30頁/共49頁局部變量與全局變量局部變量與全局變量局部變量:函數(shù)內(nèi)部定義的變量,只在本函

23、數(shù)內(nèi)有效。 main main中定義的變量也只在主函數(shù)內(nèi)有效; 不同函數(shù)中的同名變量,占不同的單元; 形式參數(shù)是局部變量; 復(fù)合語句中定義的變量只在本復(fù)合語句中有效。全局變量(外部變量):函數(shù)之外定義的變量,其有效范圍: 從定義位置到本源文件結(jié)束。 可在各函數(shù)間建立某種數(shù)據(jù)傳輸通道。(參見下圖示例(演示) 盡量少用或慎用全局變量。 外部與局部變量同名,則在局部變量的作用范圍內(nèi),外部變量不起作用。圖書館數(shù)據(jù)管理系統(tǒng)圖書館數(shù)據(jù)管理系統(tǒng)(圖書卡片數(shù)據(jù))(全局?jǐn)?shù)(圖書卡片數(shù)據(jù))(全局?jǐn)?shù)據(jù))據(jù))購買新書購買新書 借閱借閱 還書還書 查閱查閱 統(tǒng)計統(tǒng)計例例7 7有一個一維數(shù)組,內(nèi)放十個學(xué)生成有一個一維數(shù)組

24、,內(nèi)放十個學(xué)生成績,寫一個函數(shù)求出平均分,最高績,寫一個函數(shù)求出平均分,最高分和最低分。分和最低分。例例8 8區(qū)分同名局部變量和全局變量。區(qū)分同名局部變量和全局變量。第31頁/共49頁例例7:求平均分、最高分和最低分:求平均分、最高分和最低分 #include float max=0, min=0;void main( ) float ave,score10; int i; for (i=0;i10;i+) scanf( “%f”, &scorei); ave=average(score,10); printf( “max=%6.2fn min=%6.2fn aver=%6.2fn”,

25、 max, min, ave);float average(float array, int n) int i; float aver, sum=array0; max=min=array0; for (i=1; imax) max=arrayi; else if(arrayimin) min=arrayi; sum=sum+arrayi; aver=sum/n; return(aver);變量跟蹤變量跟蹤全局變量:全局變量: max minmain函數(shù):函數(shù): ave scoreaverage函數(shù):函數(shù): aver array n第32頁/共49頁例例8:區(qū)分局部變量和全局變量:區(qū)分局部變量

26、和全局變量#include int a=3, b=5;int max( int a, int b) int c; c=ab?a:b; return(c);void main( ) int a=8; printf( “max=%d”, max(a, b);變量跟蹤變量跟蹤全局變量:全局變量: a bmain函數(shù):函數(shù): amax函數(shù):函數(shù): a b c輸出結(jié)果:輸出結(jié)果:第33頁/共49頁變量的存儲類型變量的存儲類型C C語言的數(shù)據(jù)有兩種屬性:數(shù)據(jù)類型和存儲類型完整的變量說明形式為: 存儲類型標(biāo)識符 類型標(biāo)識符 變量名(1 1)變量的存儲類型:autoauto(自動),exturnexturn(

27、全局),staticstatic(靜態(tài))和registerregister(寄存器)(2 2)變量的數(shù)據(jù)類型:如整型、實型、字符型等。內(nèi)存中供用戶使用的存儲空間可分為程序區(qū)、動態(tài)存儲區(qū)和靜態(tài)存儲區(qū)。第34頁/共49頁變量的存儲類別(續(xù))變量的存儲類別(續(xù)) 數(shù)據(jù)存放的區(qū)域,是由變量定義時存儲類型和變量定義的位置決定的。(1 1)自動變量: 定義方式:autoauto(可省略) 類型名 變量名 例9 9 作用域: :定義它的分程序( ) 生存期:隨函數(shù)調(diào)用存在,隨函數(shù)結(jié)束消失 初始化:定義時可直接賦值(2 2)外部變量: 定義方式:函數(shù)外定義 例1 10 0 作用域:全程 例1111 生存期:函

28、數(shù)在內(nèi)存中存在期間 初始化:定義時可賦初值(3 3)靜態(tài)變量: 定義方式:static static 類型標(biāo)志 變量名 例1 12 2 作用域:定義的函數(shù)內(nèi)有效 例1313 生存期:隨程序存在而生存 初始化:定義時賦初值(4 4)寄存器變量: 定義方式:register register 類型標(biāo)志 變量名 例1414 初始化:定義時賦初值 說明:只運用于自動變量和函數(shù)的形式參數(shù)第35頁/共49頁例例9:自動變量示例:自動變量示例 #includevoid count( int k ) int x=2; printf( “%d:x=%d”, k , x); x+=2; printf( “x+2=

29、%dn”, x);void main( ) int i; for (i=1; i=3; i+) count(i);main函數(shù)函數(shù) 變量跟蹤變量跟蹤 icount函數(shù)函數(shù) k x (形參)形參)輸出結(jié)果:輸出結(jié)果:第36頁/共49頁變量的存儲類別(續(xù))變量的存儲類別(續(xù)) 數(shù)據(jù)存放的區(qū)域,是由變量定義時存儲類型和變量定義的位置決定的。(1 1)自動變量: 定義方式:autoauto(可省略) 類型名 變量名 例9 9 作用域: :定義它的分程序( ) 生存期:隨函數(shù)調(diào)用存在,隨函數(shù)結(jié)束消失 初始化:定義時可直接賦值(2 2)外部變量: 定義方式:函數(shù)外定義 例1 10 0 作用域:全程 例11

30、11 生存期:函數(shù)在內(nèi)存中存在期間 初始化:定義時可賦初值(3 3)靜態(tài)變量: 定義方式:static static 類型標(biāo)志 變量名 例1 12 2 作用域:定義的函數(shù)內(nèi)有效 例1313 生存期:隨程序存在而生存 初始化:定義時賦初值(4 4)寄存器變量: 定義方式:register register 類型標(biāo)志 變量名 例1414 初始化:定義時賦初值 說明:只運用于自動變量和函數(shù)的形式參數(shù)第37頁/共49頁例例10:外部變量示例外部變量示例 int n;void main( ) for (n=0; n6; n+) printf(“3 to power %d is %dn”,n,power(

31、 );int power( ) int i, p; p=1; for(i=1; i=n; i+) p=p*3; return(p);外部變量:外部變量:n 變量跟蹤變量跟蹤 power函數(shù):函數(shù): i p 輸出結(jié)果:輸出結(jié)果:第38頁/共49頁例例11:外部變量示例外部變量示例 #include void main( ) exturn int m; m=3; count( ); printf(“%dn” , m); int m;void count() m=-100; printf(“%dn”, m);說明:說明: 外部變量定義之前的函數(shù)外部變量定義之前的函數(shù)若要用該外部變量,則應(yīng)在若要用該外

32、部變量,則應(yīng)在函數(shù)內(nèi)對外部變量進行說明。函數(shù)內(nèi)對外部變量進行說明。變量跟蹤:變量跟蹤: m 輸出結(jié)果:輸出結(jié)果:第39頁/共49頁變量的存儲類別(續(xù))變量的存儲類別(續(xù)) 數(shù)據(jù)存放的區(qū)域,是由變量定義時存儲類型和變量定義的位置決定的。(1 1)自動變量: 定義方式:autoauto(可省略) 類型名 變量名 例9 9 作用域: :定義它的分程序( ) 生存期:隨函數(shù)調(diào)用存在,隨函數(shù)結(jié)束消失 初始化:定義時可直接賦值(2 2)外部變量: 定義方式:函數(shù)外定義 例1 10 0 作用域:全程 例1111 生存期:函數(shù)在內(nèi)存中存在期間 初始化:定義時可賦初值(3 3)靜態(tài)變量: 定義方式:static

33、 static 類型標(biāo)志 變量名 例1 12 2 作用域:定義的函數(shù)內(nèi)有效 例1313 生存期:隨程序存在而生存 初始化:定義時賦初值(4 4)寄存器變量: 定義方式:register register 類型標(biāo)志 變量名 例1414 初始化:定義時賦初值 說明:只運用于自動變量和函數(shù)的形式參數(shù)第40頁/共49頁例例12:靜態(tài)變量示例:靜態(tài)變量示例 #includevoid main() int i; for (i=1;i=3;i+) count(i);void count( int k) static int x=0; printf( “%d:x=%d”, k, x); x+=2; print

34、f( “x+2=%dn”, x);main函數(shù)函數(shù): 變量跟蹤變量跟蹤 icount函數(shù)函數(shù): k x (形參)形參)輸出結(jié)果:輸出結(jié)果:第41頁/共49頁例例13:靜態(tài)變量示例:打?。红o態(tài)變量示例:打印1到到5的階乘的階乘值值 #includeint fac(int n) static int f=1; f=f*n; return(f);void main() int i; for (i=1; i=5; i+) printf(“%d!=%dn”, i, fac(i);main函數(shù)函數(shù): 變量跟蹤變量跟蹤 ifac函數(shù)函數(shù): n f (形參)形參)輸出結(jié)果:輸出結(jié)果:第42頁/共49頁變量的存

35、儲類別(續(xù))變量的存儲類別(續(xù)) 數(shù)據(jù)存放的區(qū)域,是由變量定義時存儲類型和變量定義的位置決定的。(1 1)自動變量: 定義方式:autoauto(可省略) 類型名 變量名 例9 9 作用域: :定義它的分程序( ) 生存期:隨函數(shù)調(diào)用存在,隨函數(shù)結(jié)束消失 初始化:定義時可直接賦值(2 2)外部變量: 定義方式:函數(shù)外定義 例1 10 0 作用域:全程 例1111 生存期:函數(shù)在內(nèi)存中存在期間 初始化:定義時可賦初值(3 3)靜態(tài)變量: 定義方式:static static 類型標(biāo)志 變量名 例1 12 2 作用域:定義的函數(shù)內(nèi)有效 例1313 生存期:隨程序存在而生存 初始化:定義時賦初值(4 4)寄存器變量: 定義方式:register register 類型標(biāo)志 變量名 例1414 初始化:定義時賦初值 說明:只運用于自動變量和函數(shù)的形式參數(shù)第43頁/共49頁 例例14:寄存器變量示例:寄存器變量示例:計算計算x1+x2+x3+ +xn,x和和n由終端輸入。由終端輸入。 long sum(registe

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論