- 相關(guān)推薦
C語(yǔ)言自定義函數(shù)
C語(yǔ)言一共只有32個(gè)關(guān)鍵字,9種控制語(yǔ)句,程序書(shū)寫(xiě)自由。那么大家知道C語(yǔ)言自定義函數(shù)是什么呢?下面一起來(lái)看看!
函數(shù)是一段可以重復(fù)使用的代碼,用來(lái)獨(dú)立地完成某個(gè)功能,它可以接收用戶(hù)傳遞的數(shù)據(jù),也可以不接收。
無(wú)參函數(shù)的定義
如果函數(shù)不接收用戶(hù)傳遞的數(shù)據(jù),那么定義時(shí)可以不帶參數(shù)。如下所示:
返回值類(lèi)型 函數(shù)名(){
函數(shù)體
}
說(shuō)明:
返回值類(lèi)型可以是C語(yǔ)言中的任意數(shù)據(jù)類(lèi)型,例如 int、float、char 等。
函數(shù)名是標(biāo)識(shí)符的一種,命名規(guī)則和標(biāo)識(shí)符相同。函數(shù)名后面的括號(hào)( )不能少。
函數(shù)體是函數(shù)需要執(zhí)行的代碼。即使只有一個(gè)語(yǔ)句,也要由{ }包圍。
在函數(shù)體中使用return語(yǔ)句返回?cái)?shù)據(jù)。
例如,定義一個(gè)函數(shù),計(jì)算1加到100的結(jié)果:
int sum(){ int i, sum=0; for(i=1; i<=100; i++){ sum+=i; } return sum;}
計(jì)算結(jié)果保存在變量sum中,通過(guò)return語(yǔ)句返回。sum為int型,所以返回值類(lèi)型也必須為int,要一一對(duì)應(yīng)。
return是C語(yǔ)言中的一個(gè)關(guān)鍵字,只能用在函數(shù)中,用來(lái)返回處理結(jié)果。
將上面的代碼補(bǔ)充完整:
#includeint sum(){ int i, sum=0; for(i=1; i<=100; i++){ sum+=i; } return sum;}int main(){ int a = sum(); printf("The sum is %d ", a); return 0;}
運(yùn)行結(jié)果:
The sum is 5050
函數(shù)不能嵌套定義,main 也是一個(gè)函數(shù)定義,要將 sum 放在 main 外面。函數(shù)必須先定義后使用,所以 sum 只能在 main 前面。
注意:main 是函數(shù)定義,不是函數(shù)調(diào)用。當(dāng)可執(zhí)行文件加載到內(nèi)存后,系統(tǒng)從 main 函數(shù)開(kāi)始執(zhí)行,也就是說(shuō),系統(tǒng)會(huì)調(diào)用我們定義的 main 函數(shù)。
無(wú)返回值函數(shù)
有的函數(shù)不需要有返回值,或者返回值類(lèi)型不確定(很少見(jiàn)),那么用void表示,例如:
void hello(){ printf ("Hello,world "); //沒(méi)有返回值就不需要 return 語(yǔ)句}
void是C語(yǔ)言中的一個(gè)關(guān)鍵字,表示空類(lèi)型或無(wú)類(lèi)型,絕大部分情況下也就意味著沒(méi)有 return 語(yǔ)句。
有參函數(shù)的定義
如果函數(shù)需要接收用戶(hù)傳遞的數(shù)據(jù),那么定義時(shí)就要帶參數(shù)。如下所示:
返回值類(lèi)型 函數(shù)名(參數(shù)列表){
函數(shù)體
}
用戶(hù)數(shù)據(jù)通過(guò)“參數(shù)列表”傳遞給函數(shù),供函數(shù)處理。例如,定義一個(gè)函數(shù)求兩個(gè)數(shù)中的最大值:
int max(int a, int b){ if (a>b){ return a; }else{ return b; }}
參數(shù)(Parameter)本質(zhì)上也是變量,定義時(shí)要指明參數(shù)類(lèi)型和參數(shù)名稱(chēng)。參數(shù)列表中可以定義一個(gè)或多個(gè)參數(shù),多個(gè)參數(shù)之間用逗號(hào),分隔。參數(shù)列表中給出的參數(shù)可以在函數(shù)體中使用。
調(diào)用 max() 函數(shù)時(shí)可以直接傳遞整數(shù):
int n = max(10, 20);
也可以傳遞變量:
int a = 10, b = 20;
int n = max(a, b);
也可以整數(shù)和變量一起傳遞:
int a = 10;
int n = max(a, 20);
變量 n 得到的值都是20。
函數(shù)定義時(shí)給出的參數(shù)稱(chēng)為形式參數(shù),簡(jiǎn)稱(chēng)形參;函數(shù)調(diào)用時(shí)給出的參數(shù)(傳遞的數(shù)據(jù))稱(chēng)為實(shí)際參數(shù),簡(jiǎn)稱(chēng)實(shí)參。函數(shù)調(diào)用時(shí),將實(shí)參的值傳遞給形參,相當(dāng)于一次賦值操作。注意:實(shí)參和形參的類(lèi)型、數(shù)目必須一致。
將上面的代碼補(bǔ)充完整:
#includeint max(int a, int b){ if (a>b){ return a; }else{ return b; }}int main(){ int num1, num2, maxVal; printf("Input two numbers: "); scanf("%d %d", &num1, &num2); maxVal = max(num1, num2); printf("The max number: %d ", maxVal); return 0;}
運(yùn)行結(jié)果:
Input two numbers: 100 200
The max number: 200
定義max時(shí),變量a、b的值都是未知的;調(diào)用max時(shí),分別將num1、num2的值傳遞給a、b,類(lèi)似于:
a=num1;
b=num2;
return 語(yǔ)句可以有多個(gè),可以在函數(shù)體的任意位置。在max中,根據(jù) if 的判斷結(jié)果來(lái)執(zhí)行不同的 return 語(yǔ)句。
函數(shù)一旦遇到 return 語(yǔ)句就返回(停止執(zhí)行),后面的所有語(yǔ)句都不會(huì)被執(zhí)行到,例如:
int max(int a, int b){ int n = (a>b) ? a : b; return n; printf("Function is performed ");}
第4行代碼是多余的,永遠(yuǎn)沒(méi)有執(zhí)行的機(jī)會(huì)。
【C語(yǔ)言自定義函數(shù)】相關(guān)文章:
淺談C語(yǔ)言函數(shù)03-28
C語(yǔ)言函數(shù)的含義06-15
什么是C語(yǔ)言函數(shù)01-22
C語(yǔ)言函數(shù)的定義07-13
C語(yǔ)言函數(shù)的聲明以及函數(shù)原型04-20
C語(yǔ)言的指針型函數(shù)02-20
C語(yǔ)言常用的輸入函數(shù)12-20