




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、1.7.2 數(shù)組名作函數(shù)參數(shù)+ q+ p* k E/ Sz5 / _可以用數(shù)組名作函數(shù)參數(shù),此時形參應(yīng)當(dāng)用數(shù)組名或用指針變量 。 & 7 G4 x: s; z d2 q, i& h例1.11 有一個一維數(shù)組score,內(nèi)放10個學(xué)生成績,求平均成績。 1. #include 2. void main() 3. 4. floataverage(float array10);/* 函數(shù)聲明 */ 5. float score10 , aver; 6. int i; 7. printf(input 10 scores:n);8. for(i = 0 ; i 10 ; i +)9. scanf(%f,
2、&scorei); 10. printf(n); 11. averaverage( score ); 12. printf ( average score is %5.2fn, aver); 13. 14. floataverage (float array10) 15. 16. int i; 17. floataver, sum = array0;18. for(i = 1 ; 1 10; i +)19. sum = sum + arrayi;20. aver = sum/10;21. return(aver); 22. 復(fù)制代碼運行情況如下: 1. input 10 scores: 2.
3、100 56 78 98.5 76 87 99 67.5 75 97 3. average score is 83.40復(fù)制代碼例 1.12形參數(shù)組不定義長度 1. #include 2. voidmain() 3. 4. float average(float array,int n)5. floatscore_15 98.5 , 97 , 91.5 , 60 , 55;6. float score_210=67.5 , 89.5 , 99 , 69.5 , 77 , 89.5 , 76.5 , 54 , 60 , 99.5; 7. printf(the average of class A
4、 is %6.2fn,average(score_1,5); 8. printf(the average of class B is %6.2fn,average(score_2,10); 9. 10. float average(float array , int n)11. 12. int i; 13. floataver , sum = array0; 14. for(i = 1 ; i n ; i +)15. sumsum + arrayi; 16. aversum/n; 17. return(aver); 18. 復(fù)制代碼運行結(jié)果如下: 1. the average of class
5、 A is 80.40 2. The average of class B is78.20復(fù)制代碼例 8.13 用選擇法對數(shù)組中10個整數(shù)按由小到大排序。所謂選擇法就是先將10個數(shù)中最小的數(shù)與a0對換;再將a1到a9中最小的數(shù)與a1對換每比較一輪,找出一個未經(jīng)排序的數(shù)中最小的一個。共比較9輪。 1 $ F/ s* x9 G$ wa0 a1a2 a3 a4 r+ v+ w f6 z% b8 _# d3 H* t9 C3 6 1 9 4 未排序時的情況 / r( S t n- A?3 V% A1 6 3 9 4 ! h 9 r. V7 CR: 0 h R! o 將5個數(shù)中最小的數(shù)1與a0對換 7
6、h y+ B3 b& z1 ?: F: 7 P1 3 6 9 4 + s0 D. h: a6 U/ X9 E6 F 將余下的4個數(shù)中最小的數(shù)3與a1對換 $ D/ G; P4 & C: I3 K9 $ |4 Y1 3 4 9 6 j8 A$ y. uZ 將余下的3個數(shù)中最小的數(shù)4與a2對換 : & - b3 9 / P# . 1 3 4 6 9 n2 s. L6 J# l# C- C4 E5 S 將余下的2個數(shù)中最小的數(shù)6與a3對換,至此完成排序 - a: m6 h o% E- r+ A/ d9 程序?qū)嵗?1. #include 2. voidmain() 3. 4. void sort(in
7、t array , int n);5. int a10 , i ; 6. printf(enterthearrayn); 7. for(i = 0 ; i 10 ; i +)8. scanf(%d , &ai);9. sort9 a , 10 );10. printf(thesorted array:n); 11. for(i = 0 ; i 10 ; i +)12. printf(%d, ai);13. printf(n);14. 15. voidsort9int array , int n)16. 17. int i , j , k , t ; 18. for(i = 0 ; i n -
8、1 ; i +) 19. 20. k = i ; 21. for(j = i + 1 ; j n ; j +) 22. if(arrayjarrayk = k = j) 23. t=arrayk;24. arrayk=arrayi; 25. arrayi=t; 26. 27. 復(fù)制代碼程序如下: 1. #include 2. voidmain() 3. 4. max_value ( intarray4); 5. int 34=1,3,5,7,2,4,6,8,15,17,34,12; 6. printf(max value is %dn,max_value(a) ); 7. 8. max_val
9、ue (int array4) 9. 10. int i , j , k , max ; 11. max = array00;12. for(i = 0 ; i 3 ; i +)13. for(j = 0 ; j max)15. max = arrayij;16. return(max); 17. 復(fù)制代碼運行結(jié)果如下: 1. Max value is 34復(fù)制代碼1.8局部變量和全局變量 6 q, W) p; Y4 N% 1.8.1局部變量 7 a; Z! w8 fj! ZL# h在一個函數(shù)內(nèi)部定義的變量是內(nèi)部變量,它只在本函數(shù)范圍內(nèi)有效,也就是說只有在本函數(shù)內(nèi)才能使用它們,在此函數(shù)以外是不
10、能使用這些變量的。這稱為“局部變量”。 1. float f1( int a) /*函數(shù)f1 */ 2. int b,c; 3. a、b、c有效 4. 5. char f2(int x,int y) /*函數(shù)f2 */ 6. int i,j; x、y、i、j有效 7. 8. void main( ) /*主函數(shù)*/ 9. int m,n; 10. m、n有效 11. 復(fù)制代碼說明 : Q k9 L, I) c$ $ (1) 主函數(shù)中定義的變量(m,n)也只在主函數(shù)中有效,而不因為在主函數(shù)中定義而在整個文件或程序中有效。主函數(shù)也不能使用其他函數(shù)中定義的變量。 4 ys2 c% 6 m7 k9 b
11、(2) 不同函數(shù)中可以使用相同名字的變量,它們代表不同的對象,互不干擾。例如, 上面在f1函數(shù)中定義了變量b和c,倘若在f2函數(shù)中也定義變量b和c,它們在內(nèi)存中占不同的單元,互不混淆。 + B. L$ m# w7 (3) 形式參數(shù)也是局部變量。例如上面f1函數(shù)中的形參a,也只在f1函數(shù)中有效。其他函數(shù)可以調(diào)用f1函數(shù),但不能引用f1函數(shù)的形參a。 9 |+ u n) + l. l(4) 在一個函數(shù)內(nèi)部,可以在復(fù)合語句中定義變量,這些變量只在本復(fù)合語句中有效,這種復(fù)合語句也稱為“分程序”或“程序塊”。 1. void main ( ) 2. 3. int a,b; 4. 5. 6. int c;
12、 7. c=a+b;c在此范圍內(nèi)有效 a,b在此范圍內(nèi)有效 8. 9. 10. 11. 復(fù)制代碼1.8.2 全局變量 5 M X# O% 0 o$ b4 u& P在函數(shù)內(nèi)定義的變量是局部變量,而在函數(shù)之外定義的變量稱為外部變量,外部變量是全局變量(也稱全程變量)。全局變量可以為本文件中其他函數(shù)所共用。它的有效范圍為從定義變量的位置開始到本源文件結(jié)束。 1. int p=1,q=5; /* 外部變量 */ 2. float f1(int a) /* 定義函數(shù)f1 */ 3. 4. int b,c; 5. 6. 7. char c1,c2; /* 外部變量*/ 8. char f2 (int x,
13、 int y) /* 定義函數(shù)f2 */ 9. 10. int i,j; 全局變量p,q的作用范圍 11. 全局變量c1,c2的作用范圍 12. 13. void main ( ) /*主函數(shù)*/ 14. 15. int m,n; 16. 17. 復(fù)制代碼例1.15 有一個一維數(shù)組,內(nèi)放10個學(xué)生成績,寫一個函數(shù),求出平均分、最高分和最低分。 1. #include 2. float Max0 ,Min0 ; /*全局變量*/ 3. voidmain() 4. 5. float average(float array , int n ); 6. float ave , score10; 7.
14、int i; 8. for(i = 0 ; i 10 ; i +)9. scanf(%f, &scorei); 10. ave =average(score , 10); 11. printf(max=%6.2fnmin=%6.2fnaverage=%6.2fn,Max , Min , ave); 12. 13. float average(float array, int n) /*定義函數(shù),形參為數(shù)組 */ 14. 15. int i; 16. float aver, sum=array0; 17. Max=Min=array0; 18. for(i = 1 ; i Max)21. Max
15、arrayi; 22. else23. if(arrayi Min)24. Min arrayi; 25. sum=sum+arrayi;26. 27. aversum/n; 28. return(aver); 29. 復(fù)制代碼運行情況如下: 1. 99 45 78 97 100 67.5 89 92 66 43 2. max = 100.003. min = 43.004. average = 77.65復(fù)制代碼2 l. o d8 L3 O0 C建議不在必要時不要使用全局變量,原因如下: 8 m: j& aK4 q0 I4 V 全局變量在程序的全部執(zhí)行過程中都占用存儲單元,而不是僅在需要時才
16、開辟單元。 9 n) t- p1 ?7 ?9 D0 H 使用全局變量過多,會降低程序的清晰性,人們往往難以清楚地判斷出每個瞬時各個外部變量的值。在各個函數(shù)執(zhí)行時都可能改變外部變量的值,程序容易出錯。因此,要限制使用全局變量。 S- Z& S+ X- g! _& _, k它使函數(shù)的通用性降低了,因為函數(shù)在執(zhí)行時要依賴于其所在的外部變量。如果將一個函數(shù)移到另一個文件中,還要將有關(guān)的外部變量及其值一起移過去。但若該外部變量與其他文件的變量同名時,就會出現(xiàn)問題,降低了程序的可靠性和通用性。一般要求把程序中的函數(shù)做成一個封閉體,除了可以通過“實參形參”的渠道與外界發(fā)生聯(lián)系外,沒有其他渠道。 + N9 l
17、( ?3 q+ _3 7 S$ s例1.16 外部變量與局部變量同名 1. #include 2. int a=3,b=5; /* a,b為外部變量*/ a,b作用范圍 3. void main ( ) 4. 5. int a=8; /*a為局部變量 */ 局部變量a作用范圍 6. printf (%d, max (a,b); 全局變量b的作用范圍 7. 8. max (int a, int b) /*a,b為局部變量 */ 9. int c; 10. c=ab?ab; 形參a、b作用范圍 11. return (c); 12. 復(fù)制代碼運行結(jié)果為 1. 8復(fù)制代碼1.9 變量的存儲類別 ;
18、_% Q7 O3 Y( o6 s6 T+ s1.9.1 動態(tài)存儲方式與靜態(tài)存儲方式 5 q8 j0 c( x/ k) w% z( K9 M1 N3 L前面已介紹了從變量的作用域(即從空間)角度來分,可以分為全局變量和局部變量。那么從變量值存在的時間(即生存期)角度來分,又可以分為靜態(tài)存儲方式和動態(tài)存儲方式。 / + w* O/ c7 B* c7 o, 所謂靜態(tài)存儲方式是指在程序運行期間由系統(tǒng)分配固定的存儲空間的方式。而動態(tài)存儲方式則是在程序運行期間根據(jù)需要進行動態(tài)的分配存儲空間的方式。這個存儲空間可以分為三部分: # |/ I2 z7 X# mK3 yc 程序區(qū) 2 R( Z6 xq2 w!
19、U* F 靜態(tài)存儲區(qū) $ B4 4 I. ; F% R 動態(tài)存儲區(qū) - g$ 0 S+ S5 x % u* D7 ?在C語言中每一個變量和函數(shù)有兩個屬性:數(shù)據(jù)類型和數(shù)據(jù)的存儲類別。對數(shù)據(jù)類型,讀者已熟悉(如整型、字符型等)。存儲類別指的是數(shù)據(jù)在內(nèi)存中存儲的方式。存儲方式分為兩大類:靜態(tài)存儲類和動態(tài)存儲類。具體包含四種:自動的(auto),靜態(tài)的(static),寄存器的(register),外部的(extern)。根據(jù)變量的存儲類別,可以知道變量的作用域和生存期。 6 K9 B8 A) O( d1.9.2 auto變量 / G- G E) i( G函數(shù)中的局部變量,如不專門聲明為static存
20、儲類別,都是動態(tài)地分配存儲空間的,數(shù)據(jù)存儲在動態(tài)存儲區(qū)中。函數(shù)中的形參和在函數(shù)中定義的變量(包括在復(fù)合語句中定義的變量),都屬此類,在調(diào)用該函數(shù)時系統(tǒng)會給它們分配存儲空間,在函數(shù)調(diào)用結(jié)束時就自動釋放這些存儲空間。因此這類局部變量稱為自動變量。自動變量用關(guān)鍵字auto作存儲類別的聲明。% I. C9 . M+ f7 r, F7 n$ R例如: 1. int f(int a)/*定義f函數(shù),a為形參 */ 2. 3. autoint b , c 3;/*定義b 、c為自動變量 */ 4. 5. 復(fù)制代碼1.9.3用static聲明局部變量 + G5 X3 JI: c/ w/ X. c d! g4
21、T有時希望函數(shù)中的局部變量的值在函數(shù)調(diào)用結(jié)束后不消失而保留原值,即其占用的存儲單元不釋放,在下一次該函數(shù)調(diào)用時,該變量已有值,就是上一次函數(shù)調(diào)用結(jié)束時的值。這時就應(yīng)該指定該局部變量為“靜態(tài)局部變量”,用關(guān)鍵字static進行聲明。通過下面簡單的例子可以了解它的特點。 # p) s- h2 ( o9 K$ z* x3 J例1.17 考察靜態(tài)局部變量的值。 1. #include 2. voidmain()3. 4. int f(int); 5. int a = 2 , i ;6. for(i = 0 ; i 3 ; i +)7. printf(%d,f(a);8. 9. int f(int a)
22、10. 11. auto int b = 0; 12. static c = 3;13. b = b + 1;14. c = c + 1; 15. return(a + b + c); 16. 復(fù)制代碼對靜態(tài)局部變量的說明: 3 L% |. ?X3 x9 M(1) 靜態(tài)局部變量屬于靜態(tài)存儲類別,在靜態(tài)存儲區(qū)內(nèi)分配存儲單元。在程序整個運行期間都不釋放。而自動變量(即動態(tài)局部變量)屬于動態(tài)存儲類別,占動態(tài)存儲區(qū)空間而不占靜態(tài)存儲區(qū)空間,函數(shù)調(diào)用結(jié)束后即釋放。 1 ?6 / d0 w, t+ x(2) 對靜態(tài)局部變量是在編譯時賦初值的,即只賦初值一次,在程序運行時它已有初值。以后每次調(diào)用函數(shù)時不再重
23、新賦初值而只是保留上次函數(shù)調(diào)用結(jié)束時的值。而對自動變量賦初值,不是在編譯時進行的,而是在函數(shù)調(diào)用時進行,每調(diào)用一次函數(shù)重新給一次初值,相當(dāng)于執(zhí)行一次賦值語句。 # X! iA& v3 t1 O: s) J5 8 x( ?(3)如在定義局部變量時不賦初值的話,則對靜態(tài)局部變量來說,編譯時自動賦初值0(對數(shù)值型變量)或空字符(對字符變量)。而對自動變量來說,如果不賦初值則它的值是一個不確定的值。這是由于每次函數(shù)調(diào)用結(jié)束后存儲單元已釋放,下次調(diào)用時又重新另分配存儲單元,而所分配的單元中的值是不確定的。 # c S* O# M7 l5 D& H$ |7 f. N(4) 雖然靜態(tài)局部變量在函數(shù)調(diào)用結(jié)束后
24、仍然存在,但其他函數(shù)是不能引用它的。 8 F6 y( & v, V8 2 f2 B例118 輸出1到5的階乘值。 1. #include 2. voidmain()3. 4. intfac(int n); 5. int i ;6. for(i = 1 ; 1 = 5 ; i +)7. printf(%d!=%dn, i , fac(i)8. 9. Int fac(int n) 10. 11. staticint f = 1 ;12. f = f * n ;13. return(f);14. 復(fù)制代碼1.9.4 register變量 # O8 R6 d1 P 0 w* u4 C! _+ K一般情
25、況下,變量(包括靜態(tài)存儲方式和動態(tài)存儲方式)的值是存放在內(nèi)存中的。當(dāng)程序中用到哪一個變量的值時,由控制器發(fā)出指令將內(nèi)存中該變量的值送到運算器中。 經(jīng)過運算器進行運算,如果需要存數(shù),再從運算器將數(shù)據(jù)送到內(nèi)存存放。 K/ O5 F7 2 n, U# 5 ?+ V! n) K如果有一些變量使用頻繁(例如在一個函數(shù)中執(zhí)行10000次循環(huán),每次循環(huán)中都要引用某局部變量),則為存取變量的值要花費不少時間。為提高執(zhí)行效率,C語言允許將局部變量的值放在CPU中的寄存器中,需要用時直接從寄存器取出參加運算,不必再到內(nèi)存中去存取。由于對寄存器的存取速度遠高于對內(nèi)存的存取速度,因此這樣做可以提高執(zhí)行效率。這種變量叫
26、做寄存器變量,用關(guān)鍵字register作聲明。例如,例119中的程序是輸出1到n的階乘的值。 : b4 ( o/ l+ D% m例119使用寄存器變量 1. #include 2. void main ( ) 3. 4. long fac(long); 5. long i,n; 6. scanf(%ld,&n); 7. for(i=1;i=n;i+) 8. printf(%ld!=%ldn,i,fac(i); 9. 10. long fac(long n) 11. 12. register long i,f=1; /*定義寄存器變量*/ 13. for (i=1;i=n;i+) 14. f=f
27、*i; 15. return (f); 16. 復(fù)制代碼1.9.5用extern聲明外部變量 + t- L; ) n* + ?* V6 Z9 5 : 外部變量是在函數(shù)的外部定義的全局變量,它的作用域是從變量的定義處開始,到本程序文件的末尾。在此作用域內(nèi),全局變量可以為程序中各個函數(shù)所引用。編譯時將外部變量分配在靜態(tài)存儲區(qū)。 ?+ j/ # _; r: ( |! ?; n9 I有時需要用extern來聲明外部變量,以擴展外部變量的作用城。 6 eX8 9 o# U) 0 s+ C/ Q1. 在一個文件內(nèi)聲明外部變量 5 o& E N b% g8 l$ L例120 用extern聲明外部變量,擴展
28、它在程序文件中的作用域。 1. #include 2. void main() 3. 4. int max(int,int); /*外部變量聲明*/5. externA,B; 6. printf(%dn,max(A,B); 7. 8. int A=13,B=-8; /*定義外部變量*/ 9. int max(int x,int y) /*定義max函數(shù) */ 10. 11. int z; 12. z=xy?x:y; 13. return(z); 14. 復(fù)制代碼2. 在多文件的程序中聲明外部變量 1 f2 0 P0 M) a例1.21 用extern將外部變量的作用域擴展到其他文件。 本程序的
29、作用是給定b的值,輸入a和m, 求ab和am的值。文件file1.c中的內(nèi)容為: 1. #include 2. int A; /*定義外部變量*/ 3. void main() 4. 5. int power(int); /*函數(shù)聲明*/ 6. int b = 3 , c , d , m ;; 7. printf(enter the number a and its power m:n); 8. scanf(%d , %d, %A, %m);9. c A*b; 10. printf(%d * %d = %dn, A , b , c);11. d = power(m);12. printf(%d
30、 * %d + %dn,A , m , d);13. 復(fù)制代碼文件file2.c中的內(nèi)容為: y1 O( z, ?& N! NexternA; /*聲明A為一個已定義的外部變量*/ 1. int power(int n);2. 3. int i , y = 1 ; 4. for(i = 1 ; i = n ; i +)5. y * A; 6. return(y);7. 復(fù)制代碼1.9.6用static聲明外部變量 $ ?; k# ; w: 8 # n有時在程序設(shè)計中希望某些外部變量只限于被本文件引用,而不能被其他文件引用。這時可以在定義外部變量時加一個static聲明。/ ( Y+ 9 i0
31、B! U5 k/ N- Y) y; u5 s. _& + & 例如: 1. file1.c file2.c 2. static int A; extern int A; 3. void main ( ) void fun (int n) 4. 5. A=A*n; 6. 復(fù)制代碼1.9.7關(guān)于變量的聲明和定義 / t6 l% ; B- F0 T* _5 對變量而言,聲明與定義的關(guān)系稍微復(fù)雜一些。在聲明部分出現(xiàn)的變量有兩種情況:一種是需要建立存儲空間的(如:int a; ),另一種是不需要建立存儲空間的(如:extern a;)。前者稱為“定義性聲明”(defining declaration)
32、,或簡稱定義(definition)。 后者稱為“引用性聲明”(referencing declaration)。廣義地說,聲明包括定義,但并非所有的聲明都是定義。對“int a;” 而言,它既是聲明,又是定義。而對“extern a;” 而言,它是聲明而不是定義。 6 y0 x! z. Q1 C/ I W- j一般為了敘述方便,把建立存儲空間的聲明稱定義,而把不需要建立存儲空間的聲明稱為聲明。顯然這里指的聲明是狹義的,即非定義性聲明。3 d( A( y I4 J: q例如: 1. void main() 2. 3. extern A; /*是聲明不是定義。聲明A是一 4. 個已定義的外部變量
33、*/ 5. 6. 7. int A;復(fù)制代碼1.9.8存儲類別小結(jié) r% ; t# a: d1 Z( (1) 從作用域角度分,有局部變量和全局變量。它們采用的存儲類別如下: Y, % X( Vb 局部變量|自動變量,即動態(tài)局部變量(離開函數(shù),值就消失) ( R0 e! C! Y, M$ H( Z |靜態(tài)局部變量(離開函數(shù),值仍保留) 4 ?# & y! G H: H$ G! g |寄存器變量(離開函數(shù),值就消失) 4 & N2 d. q0 z0 U! u |(形式參數(shù)可以定義為自動變量或寄存器變量) 8 c+ k6 O* e6 a3 7 l全局變量|靜態(tài)外部變量(只限本文件引用) # 8 E!
34、 m, g+ S9 w5 t 7 e |外部變量(即非靜態(tài)的外部變量,允許其他文件引用) - f; T- W- q3 ; % (2) 從變量存在的時間(生存期)來區(qū)分,有動態(tài)存儲和靜態(tài)存儲兩種類型。靜態(tài)存儲是程序整個運行時間都存在,而動態(tài)存儲則是在調(diào)用函數(shù)時臨時分配單元。 5 # T& D; T2 X0 8 ! e- w- f動態(tài)存儲|自動變量(本函數(shù)內(nèi)有效) - u1 jO( s& r( z+ a |寄存器變量(本函數(shù)內(nèi)有效) # y$ O) L* j, f% X# n |形式參數(shù)(本函數(shù)內(nèi)有效) % t5 _7 ; n: C# . N靜態(tài)存儲|靜態(tài)局部變量(函數(shù)內(nèi)有效) 1 4 g: z,
35、 * |9 q C- |靜態(tài)外部變量(本文件內(nèi)有效) . Z, w4 n% T9 C. l* w% O% V/ |! v |外部變量(其他文件可引用) ( S7 r2 J6 # l1 g$ U W4 Y(3) 從變量值存放的位置來區(qū)分,可分為: 3 . v/ A5 f7 U2 f! |內(nèi)存中靜態(tài)存儲區(qū)|靜態(tài)局部變量 8 Z% n# K: I, e: |靜態(tài)外部變量(函數(shù)外部靜態(tài)變量) 1 |7 N/ l1 0 K9 Q7 Q2 m2 H |外部變量(可為其他文件引用) 5 I- r5 Y0 H. C內(nèi)存中動態(tài)存儲區(qū):自動變量和形式參數(shù)CPU中的寄存器:寄存器變量 ) t0 y& x& bX/
36、S/ _6 N4 o(4) 關(guān)于作用域和生存期的概念。從前面敘述可以知道,對一個變量的性質(zhì)可以從兩個方面分析,一是變量的作用域,一是變量值存在時間的長短,即生存期。前者是從空間的角度,后者是從時間的角度。二者有聯(lián)系但不是同一回事。 # w& : E% s K+ i(5) static對局部變量和全局變量的作用不同。對局部變量來說,它使變量由動態(tài)存儲方式改變?yōu)殪o態(tài)存儲方式。而對全局變量來說,它使變量局部化(局部于本文件),但仍為靜態(tài)存儲方式。從作用域角度看,凡有static聲明的,其作用域都是局限的,或者是局限于本函數(shù)內(nèi)(靜態(tài)局部變量),或者局限于本文件內(nèi)(靜態(tài)外部變量)。 7 y1 $ 3 #
37、 f& c1.10 內(nèi)部函數(shù)和外部函數(shù) ; f: R* _# R) S1 P( B/ b0 Y5 H函數(shù)本質(zhì)上是全局的,因為一個函數(shù)要被另外的函數(shù)調(diào)用,但是,也可以指定函數(shù)不能被其他文件調(diào)用。根據(jù)函數(shù)能否被其他源文件調(diào)用,將函數(shù)區(qū)分為內(nèi)部函數(shù)和外部函數(shù)。 : z: H( f: |3 e1.10.1內(nèi)部函數(shù) # a+ Q5 1 Z( n/ m如果一個函數(shù)只能被本文件中其他函數(shù)所調(diào)用,它稱為內(nèi)部函數(shù)。在定義內(nèi)部函數(shù)時,在函數(shù)名和函數(shù)類型的前面加static。4 K- ?9 . O7 7 A4 A# m: s- s即 static 類型標(biāo)識符 函數(shù)名(形參表) W+ z$ M8 I+ D: E8 t, n如 1. static int fun ( int a , int b )復(fù)制代碼1.10.2外部函數(shù)0 n& D/ e3 Z) x; i8 5 L(1) 在定義函數(shù)時,如果在函數(shù)首部的最左端加關(guān)鍵字extern,則表示此函數(shù)是外部函數(shù),可供其他文件調(diào)用。如函數(shù)首部可以寫為extern int fun (int a, int b) 3 X( Q- * e& p- p& H) a# r這樣,函數(shù)fun就可以為
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度新能源汽車充電站建設(shè)方協(xié)議正規(guī)化合同
- 2025年度股票代持與股權(quán)激勵結(jié)合合同范本
- 老板與員工2025年度業(yè)績對賭合作協(xié)議
- 2025年度汽車抵押貸款欠款調(diào)解及還款計劃合同
- 光盤批發(fā)企業(yè)ESG實踐與創(chuàng)新戰(zhàn)略研究報告
- 二零二五年度體育用品銷售提成與賽事贊助合同
- 二零二五年度企業(yè)員工入職與員工激勵方案合同
- 2025年度生態(tài)修復(fù)與環(huán)境保護工程建設(shè)合作協(xié)議
- 可食用動物雜碎企業(yè)ESG實踐與創(chuàng)新戰(zhàn)略研究報告
- 軟木禮品企業(yè)數(shù)字化轉(zhuǎn)型與智慧升級戰(zhàn)略研究報告
- (正式版)JTT 1495-2024 公路水運危險性較大工程安全專項施工方案審查規(guī)程
- 芻議小學(xué)英語有效作業(yè)分層設(shè)計
- 《征兵入伍應(yīng)征公民體格檢查標(biāo)準(zhǔn)條文釋義》
- 19R505-19G540室外管道鋼結(jié)構(gòu)架空綜合管廊敷設(shè)
- 2024年中國科學(xué)技術(shù)大學(xué)創(chuàng)新科學(xué)營測試物理試題真題
- 植物營養(yǎng)學(xué)課件
- 大學(xué)物理-質(zhì)點動力學(xué)
- 自考英語二詞性轉(zhuǎn)換大全
- 《5G無線網(wǎng)絡(luò)規(guī)劃與優(yōu)化》 課件 第一章 5G網(wǎng)絡(luò)概述
- 醫(yī)院導(dǎo)視系統(tǒng)方案
- 教科版-六年級科學(xué)下冊制作校園生物分布圖課件
評論
0/150
提交評論