在本教程中,將向您介紹C語言編程中的函數(shù)(用戶定義函數(shù)和標(biāo)準(zhǔn)庫函數(shù))。此外,您還將學(xué)習(xí)為什么在編程中使用函數(shù)。
假設(shè)您需要創(chuàng)建程序來創(chuàng)建一個圓并為其著色。您可以創(chuàng)建兩個函數(shù)來解決此問題:
創(chuàng)建一個圓的函數(shù)
創(chuàng)建顏色的函數(shù)
將復(fù)雜的問題分成較小的塊可以使我們的程序易于理解和重用。
C函數(shù)具有以下優(yōu)點。
通過使用函數(shù),我們可以避免在程序中一次又一次地重寫相同的邏輯/代碼。
我們可以在程序中以及在程序的任何位置多次調(diào)用C函數(shù)。
當(dāng)大型C程序被劃分為多個函數(shù)時,我們可以輕松地對其進行跟蹤。
可重用性是C函數(shù)的主要成就。
但是,函數(shù)調(diào)用始終是C程序的開銷。
C函數(shù)包含三個方面。
函數(shù)聲明 必須在C程序中全局聲明函數(shù),以告知編譯器函數(shù)名稱,函數(shù)參數(shù)和返回類型。
函數(shù)調(diào)用 可以從程序中的任何位置調(diào)用函數(shù)。參數(shù)列表在函數(shù)調(diào)用和函數(shù)聲明中要相同。我們必須傳遞與函數(shù)聲明中聲明的函數(shù)數(shù)量相同的函數(shù)。
函數(shù)定義 它包含要執(zhí)行的實際語句。這是調(diào)用函數(shù)時控件所涉及的最重要方面。在這里,我們必須注意,該函數(shù)只能返回一個值。
序號 | C函數(shù)方面 | 語法 |
---|---|---|
1 | 函數(shù)聲明 | return_type function_name(argument_list); |
2 | 函數(shù)調(diào)用 | function_name(argument_list) |
3 | 函數(shù)定義 | return_type function_name(argument_list){function body;} |
使用C語言創(chuàng)建函數(shù)的語法如下:
return_type function_name(data_type parameter...){ //要執(zhí)行的代碼 }
C語言編程中有兩種類型的函數(shù):
標(biāo)準(zhǔn)庫函數(shù):在C頭文件中聲明的函數(shù),例如scanf(),printf(),gets(),puts(),ceil(),floor()等。
用戶定義的函數(shù):C程序員自定義的函數(shù),我們可以多次使用它。它降低了大型程序的復(fù)雜性并優(yōu)化了代碼。
C函數(shù)可能會也可能不會從該函數(shù)返回值。如果您不必從函數(shù)返回任何值,則將void用作返回類型。
讓我們看一個簡單的C函數(shù)示例,該函數(shù)不會從該函數(shù)返回任何值。
沒有返回值的示例:
void hello(){ printf("hello c"); }
如果要從函數(shù)返回任何值,則需要使用任何數(shù)據(jù)類型,例如int,long,char等。返回類型取決于要從函數(shù)返回的值。
讓我們看一個簡單的C函數(shù)示例,該函數(shù)從該函數(shù)返回int值。
返回值示例:
int get(){ return 10; }
在上面的示例中,我們必須返回10作為值,因此返回類型為int。如果要返回浮點值(例如10.2、3.1、54.5等),則需要使用float作為方法的返回類型。
float get(){ return 10.2; }
現(xiàn)在,您需要調(diào)用該函數(shù)以獲取該函數(shù)的值。
函數(shù)可以接受也可以不接受任何參數(shù)。它可能會或可能不會返回任何值?;谶@些事實,函數(shù)調(diào)用有四個不同方面。
沒有參數(shù)且沒有返回值的函數(shù)
沒有參數(shù)但有返回值的函數(shù)
有參數(shù)且無返回值的函數(shù)
帶有參數(shù)和返回值的函數(shù)
實例1
#include<stdio.h> void printName(); void main () { printf("Hello "); printName(); } void printName() { printf("www.soo66.com"); }
輸出結(jié)果
Hello www.soo66.com
實例2
#include<stdio.h> void sum(); void main() { printf("\n計算兩個數(shù)的和:"); sum(); } void sum() { int a,b; printf("\n輸入兩個數(shù)字"); scanf("%d %d",&a,&b); printf("總和是 %d",a+b); }
輸出結(jié)果
計算兩個數(shù)的和: 輸入兩個數(shù)字 10 24 總和是 34
實例1
#include<stdio.h> int sum(); void main() { int result; printf("\n計算兩個數(shù)的和:"); result = sum(); printf("%d",result); } int sum() { int a,b; printf("\n輸入兩個數(shù)字"); scanf("%d %d",&a,&b); return a+b; }
輸出結(jié)果
計算兩個數(shù)的和: 輸入兩個數(shù)字 10 24 34
示例2:程序計算正方形的面積
#include<stdio.h> int sum(); void main() { printf("計算這個正方形的面積\n"); float area = square(); printf("正方形的面積: %f\n",area); } int square() { float side; printf("輸入邊長(以米為單位): "); scanf("%f",&side); return side * side; }
輸出結(jié)果
計算這個正方形的面積 正方形的面積: 10 輸入邊長(以米為單位): 100.000000
實例1
#include<stdio.h> void sum(int, int); void main() { int a,b,result; printf("\n計算兩個數(shù)的和:"); printf("\n輸入兩個數(shù)字:"); scanf("%d %d",&a,&b); sum(a,b); } void sum(int a, int b) { printf("\n總和是 %d",a+b); }
輸出結(jié)果
計算兩個數(shù)的和: 輸入兩個數(shù)字 10 24 總和是 34
示例2:程序計算五個數(shù)字的平均值。
#include<stdio.h> void average(int, int, int, int, int); void main() { int a,b,c,d,e; printf("\n要計算五個數(shù)的平均值:"); printf("\n輸入五個數(shù)字:"); scanf("%d %d %d %d %d",&a,&b,&c,&d,&e); average(a,b,c,d,e); } void average(int a, int b, int c, int d, int e) { float avg; avg = (a+b+c+d+e)/5; printf("給定五個數(shù)字的平均值 : %f",avg); }
輸出結(jié)果
要計算五個數(shù)的平均值: 輸入五個數(shù)字:10 20 30 40 50 給定五個數(shù)字的平均值 : 30.000000
實例1
#include<stdio.h> int sum(int, int); void main() { int a,b,result; printf("\n計算兩個數(shù)的和:"); printf("\n輸入兩個數(shù)字:"); scanf("%d %d",&a,&b); result = sum(a,b); printf("\n總和是 : %d",result); } int sum(int a, int b) { return a+b; }
輸出結(jié)果
計算兩個數(shù)的和: 輸入兩個數(shù)字:10 20 總和是 : 30
示例2:檢查數(shù)字是偶數(shù)還是奇數(shù)的程序
#include<stdio.h> int even_odd(int); void main() { int n,flag=0; printf("\n檢查一個數(shù)字是偶數(shù)還是奇數(shù)"); printf("\n輸入數(shù)字: "); scanf("%d",&n); flag = even_odd(n); if(flag == 0) { printf("\n數(shù)字是奇數(shù)"); } else { printf("\n這個數(shù)是偶數(shù)"); } } int even_odd(int n) { if(n%2 == 0) { return 1; } else { return 0; } }
輸出結(jié)果
檢查一個數(shù)字是偶數(shù)還是奇數(shù) 輸入數(shù)字: 100 這個數(shù)是偶數(shù)
標(biāo)準(zhǔn)庫函數(shù)是C語言中的內(nèi)置函數(shù),它們被分組并放置在稱為庫的公共位置。這些函數(shù)用于執(zhí)行某些特定操作。例如,printf是用于在控制臺上打印的庫函數(shù)。庫函數(shù)由編譯器的設(shè)計者創(chuàng)建。所有C標(biāo)準(zhǔn)庫函數(shù)都在擴展名為.h的不同頭文件中定義。我們需要在程序中包含這些頭文件,以利用在此類頭文件中定義的庫函數(shù)。例如,要使用諸如printf / scanf之類的庫函數(shù),我們需要在程序中包含stdio.h,這是一個頭文件,其中包含有關(guān)標(biāo)準(zhǔn)輸入/輸出的所有庫函數(shù)。
下表列出了最常用的頭文件。
序號 | 頭文件 | 描述 |
---|---|---|
1 | stdio.h | 這是一個標(biāo)準(zhǔn)的輸入/輸出頭文件。它包含有關(guān)標(biāo)準(zhǔn)輸入/輸出的所有庫函數(shù)。 |
2 | conio.h | 這是一個控制臺輸入/輸出頭文件。 |
3 | string.h | 它包含所有與字符串相關(guān)的庫函數(shù),例如gets(),puts()等。 |
4 | stdlib.h | 該頭文件包含所有通用庫函數(shù),例如malloc(),calloc(),exit()等。 |
5 | math.h | 該頭文件包含所有與數(shù)學(xué)運算相關(guān)的函數(shù),例如sqrt(),pow()等。 |
6 | time.h | 該頭文件包含所有與時間有關(guān)的函數(shù)。 |
7 | ctype.h | 該頭文件包含所有字符處理函數(shù)。 |
8 | stdarg.h | 變量參數(shù)函數(shù)在此頭文件中定義。 |
9 | signal.h | 所有信號處理函數(shù)都在此頭文件中定義。 |
10 | setjmp.h | 該文件包含所有跳轉(zhuǎn)函數(shù)。 |
11 | locale.h | 該文件包含語言環(huán)境函數(shù)。 |
12 | errno.h | 該文件包含錯誤處理函數(shù)。 |
13 | assert.h | 該文件包含診斷函數(shù)。 |
訪問這些頁面以了解更多信息: