在學(xué)習(xí)C語言函數(shù)以前,我們需要了解什么是模塊化程序設(shè)計方法。
人們在求解一個復(fù)雜問題時,通常采用的是逐步分解、分而治之的方法,也就是把一個大問題分解成若干個比較容易求解的小問題,然后分別求解。程序員在設(shè)計一個復(fù)雜的應(yīng)用程序時,往往也是把整個程序劃分為若干功能較為單一的程序模塊,然后分別予以實現(xiàn),最后再把所有的程序模塊像搭積木一樣裝配起來,這種在程序設(shè)計中分而治之的策略,被稱為模塊化程序設(shè)計方法。
在C語言中,函數(shù)是程序的基本組成單位,因此可以很方便地用函數(shù)作為程序模塊來實現(xiàn)C語言程序。
利用函數(shù),不僅可以實現(xiàn)程序的模塊化,程序設(shè)計得簡單和直觀,提高了程序的易讀性和可維護性,而且還可以把程序中普通用到的一些計算或操作編成通用的函數(shù),以供隨時調(diào)用,這樣可以大大地減輕程序員的代碼工作量。來源:www.examda.com
函數(shù)是C語言的基本構(gòu)件,是所有程序活動的舞臺。函數(shù)的一般形式是:
type-specifier function_name(parameter list)
parameter declarations
{
body of the function
}
類型說明符定義了函數(shù)中return語句返回值的類型,該返回值可以是任何有效類型。如果沒有類型說明符出現(xiàn),函數(shù)返回一個整型值。參數(shù)表是一個用逗號分隔的變量表,當函數(shù)被調(diào)用時這些變量接收調(diào)用參數(shù)的值。一個函數(shù)可以沒有參數(shù),這時函數(shù)表是空的。但即使沒有參數(shù),括號仍然是必須要有的。參數(shù)說明段定義了其中參數(shù)的類型。
當一個函數(shù)沒有明確說明類型時, C語言的編譯程序自動將整型( i n t)作為這個函數(shù)的缺省類型,缺省類型適用于很大一部分函數(shù)。當有必要返回其它類型數(shù)據(jù)時,需要分兩步處理:
首先,必須給函數(shù)以明確的類型說明符;其次,函數(shù)類型的說明必須處于對它的首次調(diào)用之前。只有這樣,C編譯程序才能為返回非整型的值的函數(shù)生成正確代碼。
4.1.1 函數(shù)的類型說明
可將函數(shù)說明為返回任何一種合法的C語言數(shù)據(jù)類型。
類型說明符告訴編譯程序它返回什么類型的數(shù)據(jù)。這個信息對于程序能否正確運行關(guān)系極大,因為不同的數(shù)據(jù)有不同的長度和內(nèi)部表示。來源:www.examda.com
返回非整型數(shù)據(jù)的函數(shù)被使用之前,必須把它的類型向程序的其余部分說明。若不這樣做,C語言的編譯程序就認為函數(shù)是返回整型數(shù)據(jù)的函數(shù),調(diào)用點又在函數(shù)類型說明之前,編譯程序就會對調(diào)用生成錯誤代碼。為了防止上述問題的出現(xiàn),必須使用一個特別的說明語句,通知編譯程序這個函數(shù)返回什么值。下例示出了這種方法。
第一個函數(shù)的類型說明sum()函數(shù)返回浮點類型的數(shù)據(jù)。這個說明使編譯程序能夠?qū)um( ) 的調(diào)用產(chǎn)生正確代碼。
函數(shù)類型說明語句的一般形式是:
type_specifier function_name (; )
即使函數(shù)使用形參,也不要將其寫入說明句。若未使用類型說明語句,函數(shù)返回的數(shù)據(jù)類型可能與調(diào)用者所要求的不一致,其結(jié)果是難以預(yù)料的。如果兩者同處于一個文件中,編譯程序可以發(fā)現(xiàn)該錯誤并停止編譯。如果不在同一個文件中,編譯程序無法發(fā)現(xiàn)這種錯誤。類型檢查僅在編譯中進行,鏈接和運行時均不檢查。因此,必須十分細心以確保絕不發(fā)生上述錯誤。
當被說明為整型的函數(shù)返回字符時,這個字符值被轉(zhuǎn)換為整數(shù)。因為C語言以不加說明的方式進行字符型與整型之間的數(shù)據(jù)轉(zhuǎn)換,因而多數(shù)情況下,返回字符值的函數(shù)并不是說明為返回字符值,而是由函數(shù)的這種字符型向整型的缺省類型轉(zhuǎn)換隱含實現(xiàn)的。
人們在求解一個復(fù)雜問題時,通常采用的是逐步分解、分而治之的方法,也就是把一個大問題分解成若干個比較容易求解的小問題,然后分別求解。程序員在設(shè)計一個復(fù)雜的應(yīng)用程序時,往往也是把整個程序劃分為若干功能較為單一的程序模塊,然后分別予以實現(xiàn),最后再把所有的程序模塊像搭積木一樣裝配起來,這種在程序設(shè)計中分而治之的策略,被稱為模塊化程序設(shè)計方法。
在C語言中,函數(shù)是程序的基本組成單位,因此可以很方便地用函數(shù)作為程序模塊來實現(xiàn)C語言程序。
利用函數(shù),不僅可以實現(xiàn)程序的模塊化,程序設(shè)計得簡單和直觀,提高了程序的易讀性和可維護性,而且還可以把程序中普通用到的一些計算或操作編成通用的函數(shù),以供隨時調(diào)用,這樣可以大大地減輕程序員的代碼工作量。來源:www.examda.com
函數(shù)是C語言的基本構(gòu)件,是所有程序活動的舞臺。函數(shù)的一般形式是:
type-specifier function_name(parameter list)
parameter declarations
{
body of the function
}
類型說明符定義了函數(shù)中return語句返回值的類型,該返回值可以是任何有效類型。如果沒有類型說明符出現(xiàn),函數(shù)返回一個整型值。參數(shù)表是一個用逗號分隔的變量表,當函數(shù)被調(diào)用時這些變量接收調(diào)用參數(shù)的值。一個函數(shù)可以沒有參數(shù),這時函數(shù)表是空的。但即使沒有參數(shù),括號仍然是必須要有的。參數(shù)說明段定義了其中參數(shù)的類型。
當一個函數(shù)沒有明確說明類型時, C語言的編譯程序自動將整型( i n t)作為這個函數(shù)的缺省類型,缺省類型適用于很大一部分函數(shù)。當有必要返回其它類型數(shù)據(jù)時,需要分兩步處理:
首先,必須給函數(shù)以明確的類型說明符;其次,函數(shù)類型的說明必須處于對它的首次調(diào)用之前。只有這樣,C編譯程序才能為返回非整型的值的函數(shù)生成正確代碼。
4.1.1 函數(shù)的類型說明
可將函數(shù)說明為返回任何一種合法的C語言數(shù)據(jù)類型。
類型說明符告訴編譯程序它返回什么類型的數(shù)據(jù)。這個信息對于程序能否正確運行關(guān)系極大,因為不同的數(shù)據(jù)有不同的長度和內(nèi)部表示。來源:www.examda.com
返回非整型數(shù)據(jù)的函數(shù)被使用之前,必須把它的類型向程序的其余部分說明。若不這樣做,C語言的編譯程序就認為函數(shù)是返回整型數(shù)據(jù)的函數(shù),調(diào)用點又在函數(shù)類型說明之前,編譯程序就會對調(diào)用生成錯誤代碼。為了防止上述問題的出現(xiàn),必須使用一個特別的說明語句,通知編譯程序這個函數(shù)返回什么值。下例示出了這種方法。
第一個函數(shù)的類型說明sum()函數(shù)返回浮點類型的數(shù)據(jù)。這個說明使編譯程序能夠?qū)um( ) 的調(diào)用產(chǎn)生正確代碼。
函數(shù)類型說明語句的一般形式是:
type_specifier function_name (; )
即使函數(shù)使用形參,也不要將其寫入說明句。若未使用類型說明語句,函數(shù)返回的數(shù)據(jù)類型可能與調(diào)用者所要求的不一致,其結(jié)果是難以預(yù)料的。如果兩者同處于一個文件中,編譯程序可以發(fā)現(xiàn)該錯誤并停止編譯。如果不在同一個文件中,編譯程序無法發(fā)現(xiàn)這種錯誤。類型檢查僅在編譯中進行,鏈接和運行時均不檢查。因此,必須十分細心以確保絕不發(fā)生上述錯誤。
當被說明為整型的函數(shù)返回字符時,這個字符值被轉(zhuǎn)換為整數(shù)。因為C語言以不加說明的方式進行字符型與整型之間的數(shù)據(jù)轉(zhuǎn)換,因而多數(shù)情況下,返回字符值的函數(shù)并不是說明為返回字符值,而是由函數(shù)的這種字符型向整型的缺省類型轉(zhuǎn)換隱含實現(xiàn)的。