“函式定義”是指對函式功能的確立,包括指定函式名,函式值類型、形參類型、函式體等,它是一個完整的、獨立的函式單位。而“函式聲明”的作用則是把函式的名字、函式類型以及形參類型、個數和順序通知編譯系統,以便在調用該函式時系統按此進行對照檢查(例如函式名是否正確,實參與形參的類型和個數是否一致)。
在書寫形式上,函式聲明可以把函式頭部複製過來,在後面加一個分號;而且在參數表中可以只寫各個參數的類型名,而不必寫參數名。
定義:
檔案中聲明函式:
聲明與定義的區別:
函式的定義
- 包含函式類型、函式名、形參及形參類型、函式體等
- 在程式中,函式的定義只能有一次
- 函式首部與花括弧間不加分號
函式的聲明
- 函式聲明是對定義的函式的返回值的類型說明,以通知系統在本函式中所調用的函式是什麼類型。
- 不包含函式體(或形參)
- 調用幾次該函式就應在各個主調函式中做相應聲明
- 函式聲明是一個說明語句,必須以分號結束!
注意事項:
- 函式聲明可以省略形參名,但是函式定義的首部必須寫出所有形參名並給出其對應的數據類型。
- 函式原型的主要目的為聲明函式返回值類型以及函式的期望接受的參數的個數、參數類型和參數順序
- 如果程式中沒有某個函式的函式原型(沒有說明),編譯系統就會用第一次出現的這個函式(函式定義或函式調用)構造函式原型
- 在預設下編譯系統默認函式返回值為int
- 而對函式參數類型不做任何假設
- 和函式原型不匹配的函式調用會導致語法錯誤
- 函式原型和函式定義不一致,也會產生錯誤
- C語言環境下,如果函式不進行聲明就使用,可能會發生錯誤,因為默認將返回值做為int類型來處理,所以,最好是在使用之前對函式進行聲明。