二級C語言考試輔導教程第五章:函數(shù)[10]

字號:

內部函數(shù)和外部函數(shù)
     函數(shù)一旦定義后就可被其它函數(shù)調用。 但當一個源程序由多個源文件組成時, 在一個源文件中定義的函數(shù)能否被其它源文件中的函數(shù)調用呢?為此,C語言又把函數(shù)分為兩類:
     一、內部函數(shù)
     如果在一個源文件中定義的函數(shù)只能被本文件中的函數(shù)調用,而不能被同一源程序其它文件中的函數(shù)調用, 這種函數(shù)稱為內部函
     數(shù)。定義內部函數(shù)的一般形式是: static 類型說明符 函數(shù)名(形參表) 例如:
     static int f(int a,int b) 內部函數(shù)也稱為靜態(tài)函數(shù)。但此處靜態(tài)static 的含義已不是指存儲方式,而是指對函數(shù)的調用范圍只局限于本文件。 因此在不同的源文件中定義同名的靜態(tài)函數(shù)不會引起混淆。
     二、外部函數(shù)
     外部函數(shù)在整個源程序中都有效,其定義的一般形式為: extern 類型說明符 函數(shù)名(形參表) 例如:
     extern int f(int a,int b)如在函數(shù)定義中沒有說明extern或static則隱含為extern。在一個源文件的函數(shù)中調用其它源文件中定義的外部函數(shù)時,應 用extern說明被調函數(shù)為外部函數(shù)。例如:
     F1.C (源文件一)
     main()
     {
     extern int f1(int i); /*外部函數(shù)說明,表示f1函
     數(shù)在其它源文件中*/
     ……
     }
     F2.C (源文件二)
     extern int f1(int i); /*外部函數(shù)定義*/
     {
     ……
     }
     本章小結
     1. 函數(shù)的分類
     (1)庫函數(shù):由C系統(tǒng)提供的函數(shù); 來源:www.examda.com
     (2)用戶定義函數(shù):由用戶自己定義的函數(shù);
     (3)有返回值的函數(shù)向調用者返回函數(shù)值,應說明函數(shù)類型( 即返回值的類型 );
     (4)無返回值的函數(shù):不返回函數(shù)值,說明為空(void)類型;
     (5)有參函數(shù):主調函數(shù)向被調函數(shù)傳送數(shù)據(jù);
     (6)無參函數(shù):主調函數(shù)與被調函數(shù)間無數(shù)據(jù)傳送;
     (7)內部函數(shù):只能在本源文件中使用的函數(shù);
     (8)外部函數(shù):可在整個源程序中使用的函數(shù)。
     2. 函數(shù)定義的一般形式
     [extern/static] 類型說明符 函數(shù)名([形參表]) 方括號內為可選項。
     3. 函數(shù)說明的一般形式 [extern] 類型說明符 函數(shù)名([形參表]);
     4. 函數(shù)調用的一般形式 函數(shù)名([實參表])
     5. 函數(shù)的參數(shù)分為形參和實參兩種,形參出現(xiàn)在函數(shù)定義中,實參出現(xiàn)在函數(shù)調用中,發(fā)生函數(shù)調用時,將把實參的值傳送給形參。
     6. 函數(shù)的值是指函數(shù)的返回值,它是在函數(shù)中由return語句返回的。
     7. 數(shù)組名作為函數(shù)參數(shù)時不進行值傳送而進行地址傳送。形參和實參實際上為同一數(shù)組的兩個名稱。因此形參數(shù)組的值發(fā)生變化,實參數(shù)組的值當然也變化。
     8. C語言中,允許函數(shù)的嵌套調用和函數(shù)的遞歸調用。
     9. 可從三個方面對變量分類,即變量的數(shù)據(jù)類型,變量作用域和變量的存儲類型。在第二章中主要介紹變量的數(shù)據(jù)類型,本章中介紹了變量的作用域和變量的存儲類型。
     10.變量的作用域是指變量在程序中的有效范圍, 分為局部變量和全局變量。
     11.變量的存儲類型是指變量在內存中的存儲方式,分為靜態(tài)存儲和動態(tài)存儲,表示了變量的生存期。
     12.變量分類特性表存儲方式存儲類型說明符何處定義生存期作用域賦值前的值可賦初值類型動態(tài)存儲自動變量 auto 寄存器變量 register 函數(shù)或復合語句內被調用時在定義它的函數(shù)或復合語句內不定基本類型int或char外部變量extern函數(shù)之外整個源程序整個源程序靜態(tài)局部變量static 函數(shù)或復合語句內靜態(tài)全局變量static 函數(shù)之外整個源程序在定義它的函數(shù)或復合語句內在定義它的源文件內0任何類型。