關於函式宣告的小知識點

2021-09-07 10:55:10 字數 1305 閱讀 4105

c語言編譯系統是由上往下編譯的.一般被調函式放在主調函式後面的話,前面就該有宣告.不然c由上往下的

編譯系統將無法識別。正如變數必須先宣告後使用一樣,函式也必須在被呼叫之前先宣告,否則無法呼叫!函式的宣告可以與定義分離,要注意的是乙個函式只能被定義一次,但可以宣告多次。

【返回型別】 函式名(引數1型別 引數1,引數2型別 引數2,……);

例子:#include

int add(int x,int y); //函式宣告語句

main()

int add(int x,int y)//函式定義

編輯 就像變數可以在標頭檔案中宣告,而在原始檔中定義一樣,函式也可以在標頭檔案中宣告,在原始檔中定義。

把函式宣告直接放在每個使用該函式的原始檔中是大多數新手習慣並喜愛的方式,這是合法的。但是這種方式古板且易出錯。解決方法就是把函式的宣告放在標頭檔案中,這樣可以確保對於指定函式其所有宣告保持一致。如果函式介面發生變化,則只需修改其唯一的宣告即可。

將提供函式宣告的標頭檔案包含在定義該函式的原始檔中,可使編譯器能檢查該函式的定義和宣告是否一致。特別地,如果函式定義和函式宣告的形參列表一致,但返回型別不一致,編譯器會發出警告或出錯資訊來指出差異。

編輯 函式的宣告與函式的定義形式上十分相似,但是二者有著本質上的不同。宣告是不開闢記憶體的,僅僅告訴編譯器,要宣告的部分存在,要預留一點空間。定義則需要開闢記憶體。

函式的定義是乙個完整的函式單元:

包含函式型別、函式名、形參及形參型別、

函式體等

在程式中,函式的定義只能有一次

函式首部與花括號間不加分號

函式宣告只是對編譯系統的乙個說明:

函式宣告是對定義的函式的返回值的型別說明,以通知系統在本函式中所呼叫的函式是什麼型別。

不包含函式體(或形參)

呼叫幾次該函式就應在各個主調函式中做相應宣告

函式宣告是乙個說明語句,必須以分號結束!

編輯 函式宣告可以省略形參名,但是函式定義的首部必須寫出所有形參名並給出其對應的資料型別。

函式原型的主要目的為宣告函式返回值型別以及函式的期望接受的引數的個數、引數型別和引數順序

如果程式中沒有某個函式的函式原型(沒有說明),編譯系統就會用第一次出現的這個函式(函式定義或函式呼叫)建構函式原型

在預設下編譯系統預設函式返回值為int

而對函式引數型別不做任何假設

常見錯誤

和函式原型不匹配的函式呼叫會導致語法錯誤

函式原型和函式定義不一致,也會產生錯誤

c語言環境下,如果函式不進行宣告就使用,可能會發生錯誤,因為預設將返回值做為int型別來處理,所以,最好是在使用之前對函式進行宣告。

函式小知識點

方法一 具名函式 function f parameter 函式都會有乙個返回值,不寫,預設返回undefined。因為乙個函式必須要有乙個終止的語句 注意 consol.log 永遠返回undefined,它列印什麼和返回的沒啥關係。var a 1,2 報錯 var a 1,2 a 的值為 2 v...

關於opencv的小知識點總結

對於opencv2.4.3 使用vs2010建立工程,然後使用vs2017開啟,開啟後並不公升級程式,這樣依然使用的是vs2010的sdk,只不過是使用vs2017這個工具開發。直接使用vs2017 並配合opencv2.4.3時 會有很多問題,最好不要這樣操作。用上面讀取時發現 mat為空,使用絕...

php函式和小知識點

語句 分支語句 a 5 if a 5 else if if.else if.else.if if的巢狀 switch a 迴圈語句 for i 0 i 10 i a 10 while a 0 函式四要素 返回型別,函式名 首字母大寫 引數,函式體 函式定義方式 function show 呼叫函式 ...