C語言自定義函式

C語言一共只有32個關鍵字,9種控制語句,程式書寫自由。那麼大家知道C語言自定義函式是什麼呢?下面一起來看看!

C語言自定義函式

函式是一段可以重複使用的程式碼,用來獨立地完成某個功能,它可以接收使用者傳遞的資料,也可以不接收。

 無參函式的定義

如果函式不接收使用者傳遞的資料,那麼定義時可以不帶引數。如下所示:

返回值型別 函式名(){

函式體

}

說明:

返回值型別可以是C語言中的任意資料型別,例如 int、float、char 等。

函式名是識別符號的一種,命名規則和識別符號相同。函式名後面的括號( )不能少。

函式體是函式需要執行的程式碼。即使只有一個語句,也要由{ }包圍。

在函式體中使用return語句返回資料。

例如,定義一個函式,計算1加到100的結果:

int sum(){ int i, sum=0; for(i=1; i<=100; i++){ sum+=i; } return sum;}

計算結果儲存在變數sum中,通過return語句返回。sum為int型,所以返回值型別也必須為int,要一一對應。

return是C語言中的一個關鍵字,只能用在函式中,用來返回處理結果。

將上面的程式碼補充完整:

#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;}

執行結果:

The sum is 5050

函式不能巢狀定義,main 也是一個函式定義,要將 sum 放在 main 外面。函式必須先定義後使用,所以 sum 只能在 main 前面。

注意:main 是函式定義,不是函式呼叫。當可執行檔案載入到記憶體後,系統從 main 函式開始執行,也就是說,系統會呼叫我們定義的 main 函式。

無返回值函式

有的函式不需要有返回值,或者返回值型別不確定(很少見),那麼用void表示,例如:

void hello(){ printf ("Hello,world"); //沒有返回值就不需要 return 語句}

void是C語言中的一個關鍵字,表示空型別或無型別,絕大部分情況下也就意味著沒有 return 語句。

有參函式的定義

如果函式需要接收使用者傳遞的資料,那麼定義時就要帶引數。如下所示:

返回值型別 函式名(引數列表){

函式體

}

使用者資料通過“引數列表”傳遞給函式,供函式處理。例如,定義一個函式求兩個數中的`最大值:

int max(int a, int b){ if (a>b){ return a; }else{ return b; }}

引數(Parameter)本質上也是變數,定義時要指明引數型別和引數名稱。引數列表中可以定義一個或多個引數,多個引數之間用逗號,分隔。引數列表中給出的引數可以在函式體中使用。

呼叫 max() 函式時可以直接傳遞整數:

int n = max(10, 20);

也可以傳遞變數:

int a = 10, b = 20;

int n = max(a, b);

也可以整數和變數一起傳遞:

int a = 10;

int n = max(a, 20);

變數 n 得到的值都是20。

函式定義時給出的引數稱為形式引數,簡稱形參;函式呼叫時給出的引數(傳遞的資料)稱為實際引數,簡稱實參。函式呼叫時,將實參的值傳遞給形參,相當於一次賦值操作。注意:實參和形參的型別、數目必須一致。

將上面的程式碼補充完整:

#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;}

執行結果:

Input two numbers: 100 200

The max number: 200

定義max時,變數a、b的值都是未知的;呼叫max時,分別將num1、num2的值傳遞給a、b,類似於:

a=num1;

b=num2;

return 語句可以有多個,可以在函式體的任意位置。在max中,根據 if 的判斷結果來執行不同的 return 語句。

函式一旦遇到 return 語句就返回(停止執行),後面的所有語句都不會被執行到,例如:

int max(int a, int b){ int n = (a>b) ? a : b; return n; printf("Function is performed");}

第4行程式碼是多餘的,永遠沒有執行的機會。