定義:
【返回類型】 函式名(參數1類型 參數1,參數2類型 參數2,……);
例子:
#include<stdio.h>
int add(int x,int y); //函式聲明語句
main(){
int a,b,c;
c=add(a,b);
printf("%d",c);
}
int add(int x,int y)//函式定義
{ int z; z=x+y; return z; }
檔案中聲明函式:
就像變數可以在頭檔案中聲明,而在源檔案中定義一樣,函式也可以在頭檔案中聲明,在源檔案中定義。
把函式聲明直接放在每個使用該函式的源檔案中是大多數新手習慣並喜愛的方式,這是合法的。但是這種方式古板且易出錯。解決方法就是把函式的聲明放在頭檔案中,這樣可以確保對於指定函式其所有聲明保持一致。如果函式接口發生變化,則只需修改其唯一聲明即可。
將提供函式聲明的頭檔案包含在定義該函式的源檔案中,可使編譯器能檢查該函式的定義和聲明是否一致。特別地,如果函式定義和函式聲明的形參列表一致,但返回類型不一致,編譯器會發出警告或出錯信息來指出差異。
聲明與定義的區別:
函式的聲明與函式的定義形式上十分相似,但是二者有著本質上的不同。聲明是不開闢記憶體的,僅僅告訴編譯器,要聲明的部分存在,要預留一點空間。定義則需要開闢記憶體。
函式的定義
函式的定義是一個完整的函式單元:
包含函式類型、函式名、形參及形參類型、函式體等
在程式中,函式的定義只能有一次
函式首部與花括弧間不加分號
1.包含函式類型、函式名、形參及形參類型、函式體等
2.在程式中,函式的定義只能有一次
3.函式首部與花括弧間不加分號
函式的聲明
函式聲明只是對編譯系統的一個說明:
函式聲明是對定義的函式的返回值的類型說明,以通知系統在本函式中所調用的函式是什麼類型。
不包含函式體(或形參)
調用幾次該函式就應在各個主調函式中做相應聲明
函式聲明是一個說明語句,必須以分號結束!
1.函式聲明是對定義的函式的返回值的類型說明,以通知系統在本函式中所調用的函式是什麼類型。
2.不包含函式體(或形參)
3.調用幾次該函式就應在各個主調函式中做相應聲明
4.函式聲明是一個說明語句,必須以分號結束!
注意事項:
函式聲明可以省略形參名,但是函式定義的首部必須寫出所有形參名並給出其對應的數據類型。
函式原型的主要目的為聲明函式返回值類型以及函式的期望接受的參數的個數、參數類型和參數順序
如果程式中沒有某個函式的函式原型(沒有說明),編譯系統就會用第一次出現的這個函式(函式定義或函式調用)構造函式原型
在預設下編譯系統默認函式返回值為int
而對函式參數類型不做任何假設
常見錯誤
和函式原型不匹配的函式調用會導致語法錯誤
函式原型和函式定義不一致,也會產生錯誤
C語言環境下,如果函式不進行聲明就使用,可能會發生錯誤,因為默認將返回值做為int類型來處理,所以,最好是在使用之前對函式進行聲明。
1.函式聲明可以省略形參名,但是函式定義的首部必須寫出所有形參名並給出其對應的數據類型。
2.函式原型的主要目的為聲明函式返回值類型以及函式的期望接受的參數的個數、參數類型和參數順序
3.如果程式中沒有某個函式的函式原型(沒有說明),編譯系統就會用第一次出現的這個函式(函式定義或函式調用)構造函式原型
4.在預設下編譯系統默認函式返回值為int
5.而對函式參數類型不做任何假設
6.常見錯誤
7.和函式原型不匹配的函式調用會導致語法錯誤
8.函式原型和函式定義不一致,也會產生錯誤
9.C語言環境下,如果函式不進行聲明就使用,可能會發生錯誤,因為默認將返回值做為int類型來處理,所以,最好是在使用之前對函式進行聲明。