C語言函式


C語言中的函式在其他程式設計語言中也稱為過程或子程式。要執行任務,我們可以建立函式。一個函式可以被多次呼叫。 它提供了模組化和程式碼可重用性。

C語言中函式的優點

函式有很多優點。它們分別如下 -

(1)程式碼可重用性

通過在CC語言中建立函式,開發人員可以多次呼叫它。 所以開發人員不需要一次又一次地編寫相同的程式碼。

(2)程式碼優化

它使程式碼優化,我們不需要編寫很多程式碼。

假設你要檢查3個數位(781,883531)是否是素數。如果不使用函式,需要編寫3次計算素數邏輯。所以有重複的程式碼。

但是,如果您使用函式,則只需將計算的邏輯編寫一次即可重複使用多次。

函式型別

C語言程式設計中有兩種型別的函式:

  • 庫函式:是在C標頭檔案中宣告的函式,如:scanf()printf()gets()puts()ceil()floor()等。
  • 使用者定義的函式:是由C程式員自己建立的函式,以便他/她可以使用它多次。 它可以降低大型程式的複雜性並優化程式碼。

函式宣告

C語言中建立函式的語法如下:

return_type function_name(data_type parameter...){  
   //code to be executed  
}

返回值

C語言函式可以返回或不返回該函式的值。如果您不需要從函式返回任何值,請對返回型別使用void

我們來看一個C語言函式的簡單範例,它不會從函式返回任何值。

沒有返回值的範例:

void hello(){  
    printf("hello c");// 沒有返回值,只是列印一個字串
}

如果要從函式返回返回某個/些值,則需要使用任何資料型別,如:intlongchar等。返回型別取決於要從函式返回的值。

我們來看一個C語言函式的簡單例子,它從函式返回int值。

返回值範例:

int get(){  
    return 10;  
}

在上面的例子中,我們必須返回10作為一個值,所以返回型別是int。 如果要返回浮點值(例如10.2,3.1,54.5等),則需要指定使用float作為函式的返回型別。如下所示 -

float get(){  
    return 10.2;  
}

現在,需要來了解如何呼叫函式,獲取函式的返回值。

C語言函式中的引數

C語言函式可能有0個或更多個引數。可以在C程式中具有任何型別的引數,如:intfloatchar等。引數也稱為形式引數。

沒有使用引數的函式範例:

void hello(){  
    printf("hello c");  
}

具有1個引數的函式範例:

int cube(int n){  
    return n*n*n;  
}

具有2個引數的函式範例:

int add(int a, int b){  
   return a+b;  
}

在C語言中呼叫函式

如果函式返回任何值,則需要呼叫函式來獲取函式返回的值。 在C語言中呼叫函式的語法如下:

variable=function_name(arguments...);

(1)variable:變數不是強制性的。如果函式返回型別為void,則不能提供變數來接收函式返回的值,因為void函式不返回任何值。
(2)function_namefunction_name是要呼叫的函式的名稱。
(3)arguments:呼叫C語言函式時需要提供引數。它也被稱為實際引數(簡稱:實參)。

呼叫函式的例子:

hello(); //calls function that doesn't return a value  
int value=get(); //calls function that returns value  
int value2=add(10,20); //calls parameterized function by passing 2 values

函式範例

1. 沒有return語句的函式範例

下面來看看看C語言函式的簡單程式,它不從函式返回任何值。建立一個名稱為:function的工程,並在這個工程裡建立一個原始檔:function-without-params.c,其程式碼如下所示 -

#include <stdio.h>      
#include <conio.h> 

//定義一個無引數函式,簡單地列印一個字串
void hello() {
    printf("hello c programming");
}
void main() {

    hello(); // 呼叫函式
    hello(); // 再一次呼叫函式
    hello(); // 再一次呼叫函式
}

執行上面範例程式碼,得到以下結果 -

hello c programming
hello c programming
hello c programming

2. 帶有return語句的C函式範例

我們來看看C語言中一個帶有引數的函式程式。

建立一個原始檔:function-with-params.c,其程式碼如下所示 -

#include <stdio.h>      

// 定義一函式,返回給定引數值的立方值
int cube(int n) {
    return n*n*n;
}

// 定義一函式,返回給定兩個引數值的最大值
int max(int a, int b) {
    if (a > b) {
        return a;
    }else {
        return b;
    }
}

void main() {
    int result1 = 0, result2 = 0;
    int a = 10, b = 20, c = 0;

    result1 = cube(2); // 呼叫函式
    result2 = cube(5);

    c = max(a, b); //

    printf("the cube of 2 is : %d \n", result1);
    printf("the cube of 5 is : %d \n", result2);
    printf("the max value of %d and %d is :%d \n", a, b, c);
}

執行上面範例程式碼,得到以下結果 -

the cube of 2 is : 8
the cube of 5 is : 125
the max value of 10 and 20 is :20