將代碼段封裝成函數(shù)的過程叫做函數(shù)定義。
創(chuàng)新互聯(lián)提供做網(wǎng)站、網(wǎng)站建設、網(wǎng)頁設計,品牌網(wǎng)站設計,一元廣告等致力于企業(yè)網(wǎng)站建設與公司網(wǎng)站制作,10余年的網(wǎng)站開發(fā)和建站經(jīng)驗,助力企業(yè)信息化建設,成功案例突破上千多家,是您實現(xiàn)網(wǎng)站建設的好選擇.
函數(shù)可以重復使用的代碼,用來獨立地完成某個功能,它可以接收用戶傳遞的數(shù)據(jù),也可以不接收。接收用戶數(shù)據(jù)的函數(shù)在定義時要指明參數(shù),不接收用戶數(shù)據(jù)的不需要指明,根據(jù)這一點可以將函數(shù)分為有參函數(shù)和無參函數(shù)。
相關概念:
函數(shù)不能嵌套定義,main 也是一個函數(shù)定義,所以要將 sum 放在 main 外面。函數(shù)必須先定義后使用,所以 sum 要放在 main 前面。
函數(shù)定義時給出的參數(shù)稱為形式參數(shù),簡稱形參;函數(shù)調(diào)用時給出的參數(shù)(也就是傳遞的數(shù)據(jù))稱為實際參數(shù),簡稱實參。函數(shù)調(diào)用時,將實參的值傳遞給形參,相當于一次賦值操作。
原則上講,實參的類型和數(shù)目要與形參保持一致。如果能夠進行自動類型轉(zhuǎn)換,或者進行了強制類型轉(zhuǎn)換,那么實參類型也可以不同于形參類型,例如將 int 類型的實參傳遞給 float 類型的形參就會發(fā)生自動類型轉(zhuǎn)換。
你這個問題看似簡單,其實涉及到了函數(shù)的聲明與定義,以及C語言的標準規(guī)范和具體編譯器的實現(xiàn)問題。
從標準規(guī)范來看:
C語言允許函數(shù)里聲明函數(shù),但是不建議這么寫,因為不利于多文檔的組織。
C語言禁止函數(shù)里定義函數(shù),但是個別編譯器卻沒遵循標準。
C語言的標準和編譯器的實現(xiàn)并不是完全統(tǒng)一,為了可移植性,建議一切都按C語言標準中推薦的做法來寫。
我還寫了個代碼附帶注釋,程序在CFree這個IDE(內(nèi)置gcc編譯器)上運行是通過的,但是在VC++6上就可能通不過了,主要是編譯器具體實現(xiàn)不同。
#include?stdio.h
//函數(shù)外?
//聲明,允許,推薦的做法?
int?add1(int?a,?int?b);
int?main(int?argc,?char?*argv[])
{
//函數(shù)內(nèi)
//聲明,允許,但是不建議這么寫?
int?add2(int?a,?int?b);
//C語言標準里禁止函數(shù)內(nèi)定義函數(shù)、
//但是有個別編譯器也允許這樣做,比如GCC
//此種寫法不通用,強烈不建議使用?
int?add3(int?a,?int?b)
{
return?a+b;
}?
//C99標準中,調(diào)用函數(shù)之前,必須保證聲明已出現(xiàn)過?
printf("%d\n",?add1(1,2));
printf("%d\n",?add2(2,3));
printf("%d\n",?add3(3,4));
return?0;
}
//函數(shù)外?
//定義,允許
int?add1(int?a,?int?b)
{
return?a+b;
}
//定義,允許
int?add2(int?a,?int?b)
{
return?a+b;
}
--您的采納是我們的動力--
C語言中定義一個函數(shù)特別簡單:函數(shù)名,加上(),再加上函數(shù)體就可以。給你一個特小的例子:
func()
{
}