




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第八章 本章要點(diǎn)函數(shù)的概念函數(shù)的定義與調(diào)用函數(shù)的遞歸調(diào)用 變量的作用域函數(shù)的作用域 8.1 概述 一個(gè)C語(yǔ)言的程序除主函數(shù)外,還可以有若干個(gè)其他函數(shù)模塊。 對(duì)于較大的程序來(lái)說(shuō),往往把其中相對(duì)獨(dú)立的算法和功能定義成一個(gè)獨(dú)立的函數(shù),以供需要的地方調(diào)用。 將一個(gè)程序分解成多個(gè)函數(shù)有如下優(yōu)點(diǎn): (1) 減少代碼的重復(fù)現(xiàn)象。 (2) 便于分工合作。 (3) 便于閱讀。 (4) 便于獨(dú)立算法的代碼移植。 說(shuō)明: (1) 較大的程序,通常將程序內(nèi)容分別放在若干個(gè)源文件中,若干源程序文件組成一個(gè)C程序。 (2) 一個(gè)源程序文件是一個(gè)編譯單位。(3) 程序的執(zhí)行是從main函數(shù)開始的,如果在main函數(shù)中調(diào)用其
2、他函數(shù),在調(diào)用后流程返回到main函數(shù),在main函數(shù)中結(jié)束整個(gè)程序的運(yùn)行。 (4)所有函數(shù)都是平行的,互相獨(dú)立的。不可嵌套定義,但函數(shù)間可以互相調(diào)用,但不能調(diào)用main函數(shù)。main函數(shù)是系統(tǒng)調(diào)用的。(5)從用戶使用的角度看,函數(shù)有兩種: 標(biāo)準(zhǔn)函數(shù),即庫(kù)函數(shù)。 用戶自己定義的函數(shù)。用以解決用戶的專門需要。 (6) 從函數(shù)的形式看,函數(shù)分兩類: 無(wú)參函數(shù)。無(wú)參函數(shù)一般用來(lái)執(zhí)行指定的一組操作。有參函數(shù)。主調(diào)函數(shù)在調(diào)用被調(diào)用函數(shù)時(shí),通過(guò)參數(shù)向被調(diào)用函數(shù)傳遞數(shù)據(jù)。 8.函數(shù)定義的一般形式 8.2.1 無(wú)參函數(shù)的定義一般形式 定義無(wú)參函數(shù)的一般形式為:類型標(biāo)識(shí)符函數(shù)名() 聲明部分 語(yǔ)句部分 8.2.
3、2 有參函數(shù)定義的一般形式 定義有參函數(shù)的一般形式為:類型標(biāo)識(shí)符函數(shù)名(形式參數(shù)表列) 聲明部分 語(yǔ)句部分 例如:int max(int ,int )int ;/ *函數(shù)體中的聲明部分*?; return(); 8.2.3 空函數(shù) 定義空函數(shù)的一般形式為:類型標(biāo)識(shí)符函數(shù)名() 例如:() 主調(diào)函數(shù)調(diào)用空函數(shù)時(shí),只表明這里要調(diào)用一個(gè)函數(shù),但函數(shù)本身什么工作也不做等,以后擴(kuò)充函數(shù)功能時(shí)補(bǔ)充上。 8.函數(shù)參數(shù)和函數(shù)的值 8.形式參數(shù)和實(shí)際參數(shù) 形式參數(shù):函數(shù)名后面括號(hào)中的變量名,簡(jiǎn)稱“形參”實(shí)際參數(shù):主調(diào)函數(shù)中調(diào)用一個(gè)函數(shù)時(shí),函數(shù)名后面括號(hào)中的參數(shù)(可以是一個(gè)表達(dá)式),簡(jiǎn)稱“實(shí)參”。函數(shù)返回值:re
4、turn后面的括號(hào)中的值作為函數(shù)帶回的值。簡(jiǎn)稱“函數(shù)值”。 在不同的函數(shù)之間傳遞數(shù)據(jù),可以使用的方法有:參數(shù):通過(guò)形式參數(shù)和實(shí)際參數(shù)返回值:用return語(yǔ)句返回計(jì)算結(jié)果全局變量:外部變量例8.調(diào)用函數(shù)時(shí)的數(shù)據(jù)傳遞關(guān)于形參與實(shí)參的說(shuō)明:2424abxy 8.3.2 函數(shù)的返回值 函數(shù)的返回值是通過(guò)函數(shù)調(diào)用使主調(diào)函數(shù)得到的確定值。函數(shù)的返回值是通過(guò)函數(shù)中的return語(yǔ)句獲得的。例如:下面是3個(gè)函數(shù)的首行:int max(float ,float ) /* 函數(shù)值為整型 */char letter(char c1,char c2) /* 函數(shù)值為字符型 */ double min(int ,in
5、t ) /* 函數(shù)值為雙精度型 */ 注意:凡不加類型說(shuō)明的函數(shù),自動(dòng)按整型處理。例 8. 返回值類型與函數(shù)類型不同# include void main() int max(float ,float ); float ,; int ; scanf(f,f,a,b); = max(,); printf(“Max is dn,); int max(float ,float ) float ; /* z為實(shí)型變量 */ =?; return(); 運(yùn)行情況如下:, Max is 8. 函數(shù)的調(diào)用 8.1 函數(shù)調(diào)用的一般形式函數(shù)調(diào)用的一般形式為: 函數(shù)名(實(shí)參表列)說(shuō)明: 如果是調(diào)用無(wú)參函數(shù),則“實(shí)
6、參表列”可以沒有,但括弧不能省略。 如果按自左至右順序求實(shí)參的值,則函數(shù)調(diào)用相當(dāng)于(,) 如果按自右至左順序求實(shí)參的值,則函數(shù)調(diào)用相當(dāng)于(3,) 對(duì)于函數(shù)調(diào)用 int i=2,p;p=f(i,+i); 例 8.4 實(shí)參求值的順序 8.4.2 函數(shù)調(diào)用的方式函數(shù)語(yǔ)句把函數(shù)調(diào)用作為一個(gè)語(yǔ)句。這時(shí)不要求函數(shù)帶回值,只要求函數(shù)完成一定的操作。函數(shù)表達(dá)式函數(shù)出現(xiàn)在一個(gè)表達(dá)式中,這種表達(dá)式稱為函數(shù)表達(dá)式。這時(shí)要求函數(shù)帶回一個(gè)確定的值以參加表達(dá)式的運(yùn)算。例如:*(,); 按函數(shù)在程序中出現(xiàn)的位置來(lái)分,可以有以下三種函數(shù)調(diào)用方式: 函數(shù)參數(shù)函數(shù)調(diào)用作為一個(gè)函數(shù)的實(shí)參。例如: m = max (a , max
7、( b , c ) ) ;其中max ( b , c )是一次函數(shù)調(diào)用,它的值作為max另一次調(diào)用的實(shí)參。m的值是a、b、c三者中的最大者。8.4.3 對(duì)被調(diào)用函數(shù)的聲明和函數(shù)原型在一個(gè)函數(shù)中調(diào)用另一函數(shù)(即被調(diào)用函數(shù))需要具備哪些條件呢 ?1.首先被調(diào)用的函數(shù)必須是已經(jīng)存在的函數(shù)(是庫(kù)函數(shù)或用戶自己定義的函數(shù))。2.如果使用庫(kù)函數(shù),還應(yīng)該在本文件開頭#include 命令將調(diào)用有關(guān)庫(kù)函數(shù)時(shí)所需用到的信息“包含”到本文件中來(lái)。 3.如果使用用戶自己定義的函數(shù),而該函數(shù)的位置在調(diào)用它的函數(shù)(即主調(diào)函數(shù))的后面,應(yīng)該在主調(diào)函數(shù)中,通過(guò)函數(shù)原型對(duì)被調(diào)用的函數(shù)作聲明。例8. 對(duì)被調(diào)用的函數(shù)作聲明函數(shù)原
8、型的一般形式為:1. 函數(shù)類型 函數(shù)名(參數(shù)類型1,參數(shù)類型2);2. 函數(shù)類型 函數(shù)名(參數(shù)類型1,參數(shù)名1,參數(shù)類型2,參數(shù)名2); 注意: 函數(shù)的“定義”和“聲明”的區(qū)別: 函數(shù)的定義是指對(duì)函數(shù)功能的確立,包括指定函數(shù)名,函數(shù)值類型、形參及其類型、函數(shù)體等,它是一個(gè)完整的、獨(dú)立的函數(shù)單位。 函數(shù)的聲明的作用則是把函數(shù)的名字、函數(shù)類型以及形參的類型、個(gè)數(shù)和順序通知編譯系統(tǒng),以便在調(diào)用該函數(shù)時(shí)系統(tǒng)按此進(jìn)行對(duì)照檢查。 8.5 函數(shù)的嵌套調(diào)用 所有函數(shù)都是平行的,互相獨(dú)立的,即不可嵌套定義,但函數(shù)間可以互相調(diào)用,但不能調(diào)用main函數(shù)。main函數(shù)是系統(tǒng)調(diào)用的。例 8. 用弦截法求方程 f(x)
9、=x3-5x2+16x-80=0 的根 1. 取兩個(gè)不同點(diǎn)x1,x2,如果f(x1)和f(x2)符號(hào)相反,則(x1,x2)區(qū)間內(nèi)必有一個(gè)根。如果f(x1)與f(x2)同符號(hào),則應(yīng)改變x1,x2,直到f(x1)、f(x2)異號(hào)為止。注意x1、x2的值不應(yīng)差太大,以保證(x1,x2)區(qū)間內(nèi)只有一個(gè)根。 2. 連接(x1,f(x1)和(x2,f(x2)兩點(diǎn),此線(即弦)交x軸于x。方法:3. 若f(x)與f(x1)同符號(hào),則根必在(x,x2)區(qū)間內(nèi),此時(shí)將x作為新的x1。如果f(x)與f(x2)同符號(hào),則表示根在(x1,x)區(qū)間內(nèi),將x作為新的x2。4. 重復(fù)步驟 (2) 和 (3) , 直到 f(
10、x) 為止, 為一個(gè)很小的數(shù), 例如 10-6。此時(shí)認(rèn)為 f(x)0 。N-S流程圖 xpoint 函數(shù) 8.6 函數(shù)的遞歸調(diào)用 在調(diào)用一個(gè)函數(shù)的過(guò)程中又出現(xiàn)直接或間接地調(diào)用該函數(shù)本身,稱為函數(shù)的遞歸調(diào)用。語(yǔ)言的特點(diǎn)之一就在于允許函數(shù)的遞歸調(diào)用。 f1() f1(); 直接遞歸調(diào)用 f2() f3() f3(); f2(); 間接 遞歸調(diào)用例 8.7: 有個(gè)人坐在一起,問(wèn)第個(gè)人多少歲?他說(shuō)比第個(gè)人大歲。問(wèn)第個(gè)人歲數(shù),他說(shuō)比第個(gè)人大歲。問(wèn)第個(gè)人,又說(shuō)比第個(gè)人大歲。問(wèn)第個(gè)人,說(shuō)比第個(gè)人大歲。最后問(wèn)第個(gè)人,他說(shuō)是歲。請(qǐng)問(wèn)第個(gè)人多大。 age(5)= age (4)+2age(4)= age (3)+
11、2age(3)= age (2)+2age(2)= age (1)+2age(1)= 10用數(shù)學(xué)公式表述如下:age(n)= 10 ()age(n-1)+2 ()可以用一個(gè)函數(shù)來(lái)描述上述遞歸過(guò)程:int age(int ) *求年齡的遞歸函數(shù)* int ; * 用作存放函數(shù)的返回值的變量 * if(=) =10; else =age(n-1)+2; return();運(yùn)行結(jié)果如下:18 用一個(gè)主函數(shù)調(diào)用age函數(shù),求得第5人的年齡。#include void main() printf(,age(); 例8.用遞歸方法求! 求!也可以用遞歸方法,即!等于!,而!。可用下面的遞歸公式表示: !
12、(,) ()! ()例8.9 Hanoi(漢諾塔)問(wèn)題: 由上面的分析可知:將個(gè)盤子從座移到座可以分解為以下3個(gè)步驟:1.將上-個(gè)盤借助座先移到座上。2.把座上剩下的一個(gè)盤移到座上。3.將個(gè)盤從座借助于座移到座上。程序如下:#include void main()void hanoi(int n,char one,char two,char three); /* 對(duì)hanoi函數(shù)的聲明 */ int m; printf(input the number of diskes:); scanf(“%d”,&m); printf(The step to moveing %d diskes:n,m);
13、 hanoi(m,A,B,C); void hanoi(int n,char one,char two,char three) /* 定義hanoi函數(shù),將個(gè)盤從one座借助two座,移到three座 */ void move(char x,char y); /* 對(duì)move函數(shù)的聲明 */ if(n=1) move(one,three); else hanoi(n-1,one,three,two); move(one,three); hanoi(n-1,two,one,three); void move(char x,char y) /* 定義move函數(shù) */ printf(“%c-%cn
14、,x,y); 運(yùn)行情況如下:input the number of diskes:3 The steps to moving 3 diskes: 8.數(shù)組作為函數(shù)參數(shù) 8.7.1 數(shù)組元素作函數(shù)實(shí)參 由于實(shí)參可以是表達(dá)式,而數(shù)組元素可以是表達(dá)式的組成部分,因此數(shù)組元素可以作為函數(shù)的實(shí)參,與用變量作實(shí)參一樣,是單向傳遞,即“值傳送”方式。 8.7.2 數(shù)組名作函數(shù)參數(shù) 用數(shù)組名作函數(shù)參數(shù)時(shí),此時(shí)形參應(yīng)當(dāng)用數(shù)組名或用指針變量 。例8.11 有一個(gè)一維數(shù)組score,內(nèi)放10個(gè)學(xué)生成績(jī),求平均成績(jī)。#include void main() float average(float array10);
15、/* 函數(shù)聲明 */ float score10 , aver; int i; printf(input 10 scores:n); for(i=0; i10; i+) scanf(,scorei); printf(n); averaverage( score ); printf ( average score is .n, aver);scorescore1score2score3score9score8score0score7score6score5score4arrayfloat average (float array10) int i; float aver,sumarray0; f
16、or (i=1;i10;i+) sum=sum+arrayi; aver=sum/10;return(aver);運(yùn)行情況如下:input scores: .5 .5 average score is 83.40 例 8.12 形參數(shù)組不定義長(zhǎng)度#include void main() float average(float array , int ); float score_15 , .,; float score_210= 67.5,89.5,99,6.5, 77,89.5,76.5,54,60,99.5; printf(“the average of class A is %6.2fn
17、”, average(score_1,5); printf(“the average of class B is %6.2fn”, average(score_2,10); 地址值傳遞值傳遞float average(float array ,int ) int i; float aver,sumarray0; for (i=1; in; i+) sumsumarrayi; aversum/; return(aver); 運(yùn)行結(jié)果如下:the average of class A is 80.40The average of class is 78.20例:以下程序的運(yùn)行結(jié)果是 ? main(
18、) f ( int b, int x) int a2=2,4, x=5; x+; f (a,x); b0+=2; printf(“%d,%d,%d”, b1+=3; x,a0,a1); A) 5,2,4 B) 6,4,7 C) 6,2,4 D) 5,4,7例 8.13 用選擇法對(duì)數(shù)組中10個(gè)整數(shù)按由小到大排序。 所謂選擇法就是先將10個(gè)數(shù)中最小的數(shù)與a0對(duì)換;再將a1到a9中最小的數(shù)與a1對(duì)換每比較一輪,找出一個(gè)未經(jīng)排序的數(shù)中最小的一個(gè)。共比較9輪。未排序時(shí)的情況:a0 a1 a2 a3 a4 3 6 1 9 4 將5個(gè)數(shù)中最小的數(shù)1與a0對(duì)換: 1 6 3 9 4 將余下的4個(gè)數(shù)中最小的數(shù)3
19、與a1對(duì)換 1 3 6 9 4 將余下的3個(gè)數(shù)中最小的數(shù)4與a2對(duì)換 1 3 4 9 6 將余下的2個(gè)數(shù)中最小的數(shù)6與a3對(duì)換 1 3 4 6 9 8.7.3. 多維數(shù)組名作函數(shù)參數(shù)程序:#include void main() max_value ( int array 4); int a 34=1,3,5,7,2,4,6,8,15,17,34,12; printf(max value is n,max_value(a) ); 用多維數(shù)組名作為函數(shù)實(shí)參和形參。在被調(diào)函數(shù)中對(duì)形參數(shù)組定義時(shí)可以指定每一維的大小 ,也可以省略第一維的大小說(shuō)明。int max_value ( int array34
20、) int ,max; max=array00; for(i=0; i3; i+) for(=0; jmax) max= array ij; return(max); 運(yùn)行結(jié)果如下:Max value is 34 8.8局部變量和全局變量 8.8.1局部變量?jī)?nèi)部變量:在一個(gè)函數(shù)內(nèi)部定義的變量稱內(nèi)部變量。它只在本函數(shù)范圍內(nèi)有效,即:只有在本函數(shù)內(nèi)才能使用這些變量,故稱為“局部變量” 。例:float f1( int a) /*函數(shù)f1 */int b,c; /* a、b、c有效*/ char f2(int x,int y) /*函數(shù)f2 */int i,j; /* x、y、i、j有效*/ voi
21、d main( ) /*主函數(shù)*/int m,n; /* m、n有效*/ 主函數(shù)中定義的變量只在主函數(shù)中有效,而不因?yàn)樵谥骱瘮?shù)中定義而在整個(gè)文件或程序中有效。主函數(shù)也不能使用其他函數(shù)中定義的變量。(2) 不同函數(shù)中可以使用相同名字的變量,它們代表不同的對(duì)象,互不干擾。(3) 形式參數(shù)也是局部變量。(4) 在一個(gè)函數(shù)內(nèi)部,可以在復(fù)合語(yǔ)句中定義變量,這些變量只在本復(fù)合語(yǔ)句中有效,這種復(fù)合語(yǔ)句也稱為“分程序”或“程序塊”。void main ( )int a,b;int c; c=a+b; c在此范圍內(nèi)有效 a,b在此范圍內(nèi)有效 8.8.2 全局變量外部變量:函數(shù)之外定義的變量稱為外部變量。外部變量
22、可以為本文件中其他函數(shù)所共用。它的有效范圍為從定義變量的位置開始到本源文件結(jié)束。所以也稱全程變量。int p=1,q=5; /* 外部變量 */float f1(int a) /* 定義函數(shù)f1 */int b,c;char c1,c2; /* 外部變量*/char f2 (int x, int y) /* 定義函數(shù)f2 */int i,j; void main ( ) /*主函數(shù)*/int m,n; 全局變量c1,c2的作用范圍 全局變量p,q的作用范圍 例8.15 有一個(gè)一維數(shù)組,內(nèi)放個(gè)學(xué)生成績(jī),寫一個(gè)函數(shù),求出平均分、最高分和最低分。#include float Max,Min; *全局
23、變量*void main() float average(float array ,int n); float ave,score10; int i; for (i=0; i10;i+) scanf(%f,scorei); ave= average(score,10); printf(“max=%6.2fnmin=%6.2fn average=%6.2fn“,Max,Min,ave); float average(float array ,int n) * 定義函數(shù),形參為數(shù)組 */ int i; float aver,sum=array; Max=Min=array; for(i=1;in;
24、i+) if(arrayiMax)Maxarrayi; else if(arrayiMin)Min arrayi; sum=sum+array; aversum; return(aver); 運(yùn)行情況如下: 全局變量主要用于作為不同函數(shù)間數(shù)據(jù)傳遞的橋梁。建議:不必要時(shí)不要使用全局變量,原因如下: 全局變量在程序的全部執(zhí)行過(guò)程中都占用存儲(chǔ)單元,而不是僅在需要時(shí)才開辟單元。 使用全局變量過(guò)多,會(huì)降低程序的清晰性。在各個(gè)函數(shù)執(zhí)行時(shí)都可能改變外部變量的值,程序容易出錯(cuò)。因此,要限制使用全局變量。全局變量主要用于作為不同函數(shù)間數(shù)據(jù)傳遞的橋梁。降低函數(shù)的通用性。因?yàn)楹瘮?shù)在執(zhí)行時(shí)要依賴于其所在的外部變量。如
25、果將一個(gè)函數(shù)移到另一個(gè)文件中,還要將有關(guān)的外部變量及其值一起移過(guò)去。但若該外部變量與其他文件的變量同名時(shí),就會(huì)出現(xiàn)問(wèn)題,降低了程序的可靠性和通用性。一般要求把程序中的函數(shù)做成一個(gè)封閉體,除了可以通過(guò)“實(shí)參形參”的渠道與外界發(fā)生聯(lián)系外,沒有其他渠道。例 8.6 外部變量與局部變量同名#include int a=3,b=5; /* a,b為外部變量*/ a,b作用范圍void main ( ) int a=8; /*a為局部變量 */ 局部變量a作用范圍 printf (%d, max (a,b); 全局變量b的作用范圍 max (int a, int b) /*a,b為局部變量 */ int
26、c; c=ab?ab; 形參a、b作用范圍 return (c); 運(yùn)行結(jié)果為 8 閱讀程序,給出運(yùn)行結(jié)果:int a=4,b=5,c=6; int f(int a,int b) a/=2; c+=b-a; return(a+b+c);main() int a=2,d; d=f(a+2,a+b); printf(“n %d,%d,%d,%d”, a,b,c,d);4526abcabad4721120 8. 變量的存儲(chǔ)類別 8.9.1 動(dòng)態(tài)存儲(chǔ)方式與靜態(tài)存儲(chǔ)方式 從變量的作用域(即從空間)角度來(lái)分,可以分為全局變量和局部變量。從變量值存在的時(shí)間角度來(lái)分,又可以分為靜態(tài)存儲(chǔ)方式和動(dòng)態(tài)存儲(chǔ)方式。 靜
27、態(tài)存儲(chǔ)方式:指在程序運(yùn)行期間由系統(tǒng)分配固定的存儲(chǔ)空間的方式。 動(dòng)態(tài)存儲(chǔ)方式:則是在程序運(yùn)行期間根據(jù)需要進(jìn)行動(dòng)態(tài)的分配存儲(chǔ)空間的方式。 用戶存儲(chǔ)空間可以分為三部分: 1.程序區(qū) 2.靜態(tài)存儲(chǔ)區(qū) 3.動(dòng)態(tài)存儲(chǔ)區(qū) 變量和函數(shù)有兩個(gè)屬性:數(shù)據(jù)類型和數(shù)據(jù)的存儲(chǔ)類別。存儲(chǔ)類別指的是數(shù)據(jù)在內(nèi)存中存儲(chǔ)的方式。存儲(chǔ)方式分為兩大類:靜態(tài)存儲(chǔ)類和動(dòng)態(tài)存儲(chǔ)類。包含:自動(dòng)的(auto);靜態(tài)的(static);寄存器的(register);外部的(extern)。 8.9.2 auto變量 自動(dòng)變量auto不專門聲明為static存儲(chǔ)類別的局部變量都是動(dòng)態(tài)分配存儲(chǔ)空間,在調(diào)用該函數(shù)時(shí)系統(tǒng)會(huì)給它們分配存儲(chǔ)空間,在函數(shù)調(diào)用
28、結(jié)束時(shí)就自動(dòng)釋放這些存儲(chǔ)空間。因此這類局部變量稱為自動(dòng)變量。函數(shù)中的形參和在函數(shù)中定義的變量(包括在復(fù)合語(yǔ)句中定義的變量),都屬此類。自動(dòng)變量用關(guān)鍵字auto作存儲(chǔ)類別的聲明。例如:int (int ) *定義f函數(shù),為形參 *auto int ,;/*定義、為自動(dòng)變量 * 8.9.3 用static聲明局部變量 當(dāng)函數(shù)中的局部變量的值在函數(shù)調(diào)用結(jié)束后不消失而保留原值時(shí),該變量稱為靜態(tài)局部變量(作用域局部)。用關(guān)鍵字static進(jìn)行聲明。屬于靜態(tài)存儲(chǔ)類別,在編譯時(shí)賦初值的,即只賦初值一次,在程序運(yùn)行時(shí)它已有初值。以后每次調(diào)用函數(shù)時(shí)不再重新賦初值而只是保留上次函數(shù)調(diào)用結(jié)束時(shí)的值。如在定義局部變量
29、時(shí)不賦初值的話,則對(duì)靜態(tài)局部變量來(lái)說(shuō),編譯時(shí)自動(dòng)賦初值(對(duì)數(shù)值型變量)或空字符(對(duì)字符變量)。8.9.4 register變量 變量的值是存放在內(nèi)存中的。當(dāng)程序中用到哪一個(gè)變量的值時(shí),由控制器發(fā)出指令將內(nèi)存中該變量的值送到運(yùn)算器中。經(jīng)過(guò)運(yùn)算器進(jìn)行運(yùn)算,如果需要存數(shù),再?gòu)倪\(yùn)算器將數(shù)據(jù)送到內(nèi)存存放。 8.9.5 用extern聲明外部變量 外部變量是在函數(shù)的外部定義的全局變量,它的作用域是從變量的定義處開始,到本程序文件的末尾。在此作用域內(nèi),全局變量可以為程序中各個(gè)函數(shù)所引用。編譯時(shí)將外部變量分配在靜態(tài)存儲(chǔ)區(qū)。用extern來(lái)聲明外部變量,以擴(kuò)展外部變量的作用城。8.9.6 用static聲明外部變量 在程序設(shè)計(jì)中,某些外部變量只限于被本文件引用,而不能被其他文件引用。這時(shí)可以在定義外部變量時(shí)加一個(gè)staitic聲明。例如:file1.c file2.cstatic int A; extern A;void main ( ) void fun (
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年割灌機(jī)合作協(xié)議書
- 強(qiáng)化合規(guī)經(jīng)營(yíng)管理規(guī)避經(jīng)營(yíng)風(fēng)險(xiǎn)隱患
- 構(gòu)建智能物流系統(tǒng)優(yōu)化配送效率
- 2025年離合器主缸合作協(xié)議書
- 西安機(jī)械加工生產(chǎn)服務(wù)合同
- 化妝品行業(yè)產(chǎn)品品質(zhì)追溯系統(tǒng)建設(shè)方案
- Perfluoro-2-5-dimethyl-3-6-dioxanonanoic-acid-生命科學(xué)試劑-MCE
- Fumonisin-B1-Standard-生命科學(xué)試劑-MCE
- D-Psicose-Standard-生命科學(xué)試劑-MCE
- 電鍍培訓(xùn)資料
- 多旋翼無(wú)人機(jī)駕駛員執(zhí)照(CAAC)備考試題庫(kù)大全-下部分
- 跌倒墜床公休座談會(huì)課件
- 浙教版(2023)六上 第15課 人機(jī)對(duì)話的實(shí)現(xiàn) 教案3
- 管理學(xué)專業(yè):管理基礎(chǔ)知識(shí)試題庫(kù)(附含答案)
- 醫(yī)療器械質(zhì)量安全風(fēng)險(xiǎn)會(huì)商管理制度
- 新疆維吾爾自治區(qū)2024屆高三下學(xué)期三模試題 語(yǔ)文試題
- 人教版初中化學(xué)實(shí)驗(yàn)?zāi)夸?總表)
- 《我愛上班》朗誦稿
- Q-GDW 11711-2017 電網(wǎng)運(yùn)行風(fēng)險(xiǎn)預(yù)警管控工作規(guī)范
- 幼兒園大班下學(xué)期數(shù)學(xué)期末檢測(cè)試卷第二套
- 2022年4月自考00277行政管理學(xué)試題及答案含解析
評(píng)論
0/150
提交評(píng)論