鍍金池/ 教程/ C/ C語言函數(shù)
C語言printf()和scanf()函數(shù)
C語言strlen()函數(shù)
C語言指針
C語言ftell()函數(shù)
C語言#ifdef指令
C語言程序執(zhí)行流程
C語言歷史
C語言fprintf()和fscanf()函數(shù)
C語言#define指令
C語言#if指令
C語言將數(shù)組傳遞給函數(shù)
C語言指針的指針
C語言rewind()函數(shù)
C語言常量
C語言strcat()函數(shù)
C語言#ifndef指令
C語言continue語句
C語言注釋
C語言#include指令
C語言類型轉(zhuǎn)換
C語言strcpy()函數(shù)
C語言strlwr()函數(shù)
C語言while循環(huán)
C語言字符串
C語言strrev()函數(shù)
C語言gets()和puts()函數(shù)
C語言文件處理
C語言存儲分類
C語言運(yùn)算符
C語言數(shù)據(jù)類型
C語言strcmp()函數(shù)
C語言VS開發(fā)環(huán)境安裝
C語言轉(zhuǎn)義序列
C語言第一個程序
C語言變量
C語言goto語句
C語言預(yù)處理器指令
C語言指針?biāo)阈g(shù)運(yùn)算
C語言數(shù)學(xué)函數(shù)
C語言二維數(shù)組
C語言for循環(huán)
C語言命令行參數(shù)
C語言通過值和引用函數(shù)
C語言fputs()和fgets()函數(shù)
C語言do-while循環(huán)
C語言結(jié)構(gòu)體數(shù)組
C語言循環(huán)
C語言#pragma指令
C語言關(guān)鍵字
C語言#error指令
C語言聯(lián)合體
C語言特點(diǎn)
C語言break語句
C語言遞歸
C語言函數(shù)
C語言結(jié)構(gòu)體
C語言switch語句
C語言結(jié)構(gòu)體嵌套
C語言fputc()和fgetc()函數(shù)
C語言fseek()函數(shù)
C語言字符串函數(shù)
C語言if-else語句
C語言教程
C語言宏
C語言數(shù)組
C語言strupr()函數(shù)
C語言#undef指令

C語言函數(shù)

C語言中的函數(shù)在其他編程語言中也稱為過程或子程序。要執(zhí)行任務(wù),我們可以創(chuàng)建函數(shù)。一個函數(shù)可以被多次調(diào)用。 它提供了模塊化和代碼可重用性。

C語言中函數(shù)的優(yōu)點(diǎn)

函數(shù)有很多優(yōu)點(diǎn)。它們分別如下 -

(1)代碼可重用性

通過在CC語言中創(chuàng)建函數(shù),開發(fā)人員可以多次調(diào)用它。 所以開發(fā)人員不需要一次又一次地編寫相同的代碼。

(2)代碼優(yōu)化

它使代碼優(yōu)化,我們不需要編寫很多代碼。

假設(shè)你要檢查3個數(shù)字(781,883531)是否是素?cái)?shù)。如果不使用函數(shù),需要編寫3次計(jì)算素?cái)?shù)邏輯。所以有重復(fù)的代碼。

但是,如果您使用函數(shù),則只需將計(jì)算的邏輯編寫一次即可重復(fù)使用多次。

函數(shù)類型

C語言編程中有兩種類型的函數(shù):

  • 庫函數(shù):是在C頭文件中聲明的函數(shù),如:scanf()printf(),gets(),puts()ceil(),floor()等。
  • 用戶定義的函數(shù):是由C程序員自己創(chuàng)建的函數(shù),以便他/她可以使用它多次。 它可以降低大型程序的復(fù)雜性并優(yōu)化代碼。

函數(shù)聲明

C語言中創(chuàng)建函數(shù)的語法如下:

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

返回值

C語言函數(shù)可以返回或不返回該函數(shù)的值。如果您不需要從函數(shù)返回任何值,請對返回類型使用void。

我們來看一個C語言函數(shù)的簡單示例,它不會從函數(shù)返回任何值。

沒有返回值的示例:

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

如果要從函數(shù)返回返回某個/些值,則需要使用任何數(shù)據(jù)類型,如:intlong,char等。返回類型取決于要從函數(shù)返回的值。

我們來看一個C語言函數(shù)的簡單例子,它從函數(shù)返回int值。

返回值示例:

int get(){  
    return 10;  
}

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

float get(){  
    return 10.2;  
}

現(xiàn)在,需要來了解如何調(diào)用函數(shù),獲取函數(shù)的返回值。

C語言函數(shù)中的參數(shù)

C語言函數(shù)可能有0個或更多個參數(shù)。可以在C程序中具有任何類型的參數(shù),如:int,floatchar等。參數(shù)也稱為形式參數(shù)。

沒有使用參數(shù)的函數(shù)示例:

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

具有1個參數(shù)的函數(shù)示例:

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

具有2個參數(shù)的函數(shù)示例:

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

在C語言中調(diào)用函數(shù)

如果函數(shù)返回任何值,則需要調(diào)用函數(shù)來獲取函數(shù)返回的值。 在C語言中調(diào)用函數(shù)的語法如下:

variable=function_name(arguments...);

(1)variable:變量不是強(qiáng)制性的。如果函數(shù)返回類型為void,則不能提供變量來接收函數(shù)返回的值,因?yàn)?code>void函數(shù)不返回任何值。
(2)function_namefunction_name是要調(diào)用的函數(shù)的名稱。
(3)arguments:調(diào)用C語言函數(shù)時需要提供參數(shù)。它也被稱為實(shí)際參數(shù)(簡稱:實(shí)參)。

調(diào)用函數(shù)的例子:

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

函數(shù)示例

1. 沒有return語句的函數(shù)示例

下面來看看看C語言函數(shù)的簡單程序,它不從函數(shù)返回任何值。創(chuàng)建一個名稱為:function的工程,并在這個工程里創(chuàng)建一個源文件:function-without-params.c,其代碼如下所示 -

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

//定義一個無參數(shù)函數(shù),簡單地打印一個字符串
void hello() {
    printf("hello c programming");
}
void main() {

    hello(); // 調(diào)用函數(shù)
    hello(); // 再一次調(diào)用函數(shù)
    hello(); // 再一次調(diào)用函數(shù)
}

執(zhí)行上面示例代碼,得到以下結(jié)果 -

hello c programming
hello c programming
hello c programming

2. 帶有return語句的C函數(shù)示例

我們來看看C語言中一個帶有參數(shù)的函數(shù)程序。

創(chuàng)建一個源文件:function-with-params.c,其代碼如下所示 -

#include <stdio.h>      

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

// 定義一函數(shù),返回給定兩個參數(shù)值的最大值
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); // 調(diào)用函數(shù)
    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);
}

執(zhí)行上面示例代碼,得到以下結(jié)果 -

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