C語言函數菜鳥問答

來源:互聯網
上載者:User

1、什麼是函數

在C語言中,完成一個特定任務的程式段、子程式稱作函數,在一個完整的C程式中,通常是由很多個函數組成的,每一個函數完成其指定的任務。

2、什麼是函數原型

一個函數有函數名、函數的傳回值及傳回值的類型、函數的參數及參數的類型。對函數的所有這些特徵予以描述稱作函數的原型。函數原型一般放在整個程式檔案的開始部分(內建函式)。對於可在當前源檔案以外使用的函數,應該在一個標頭檔中說明,要使用這些函數的源檔案必須包含這個標頭檔。

3、什麼是函數的傳回值

當一個函數執行完之後傳遞給調用函數一個值,稱為傳回值。是否需要返回一個值給調用函數,具體情況視程式中的需要而定,有時根本就不需要返回一個值給調用函數。

4、為什麼要說明函數的原型

函數原型能告訴編譯器一個函數接受什麼樣的參數,將返回什麼樣的傳回值,這樣編譯器就能檢查對函數的調用是否正確,是否存在錯誤的類型轉換。例:

int some_func(int,char *,long);

編譯器應會檢查所有對該函數的調用(包括該函數的定義)是否使用了三個參數並且返回一個int類型的值。如果編譯器發現函數的調用或定義與函數原型不匹配,編譯器應會報告出錯或警告資訊。例如對上述函數原型來說,當編譯器檢查以下語句時,就會報告出錯或警告訊息:

x=some_func(1);    /*參數個數少*/

x=some_func("HELLO!",1,"DUDE!");  /*參數類型錯誤*/

x=some_func(1,str,2879,"T");    /*參數太多*/

下面的函數調用同樣是不正確的,因為函數some_func()的傳回值不是一個long *類型的值。

lValue=some_func(1,str,2879);  /*函數傳回值應該是int而不是long型。*/

同樣編譯器還能檢查函數的定義(或函數體)是否與函數原型匹配。例如當編譯器檢查以下函數定義時,應會報告出錯或警告資訊:

int some_func(char * string,,long lValue,int iValue)  /*參數的位置不對*/

總之,在源檔案中說明函數原型提供了一種檢查函數是否被正確引用的機制。目前許多流行的編譯器都會檢查被引用的函數的原型是否已在源檔案中說明過,如果沒有,就會發出警告資訊。

相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。