C語言中的函數(shù)在其他編程語言中也稱為過程或子程序。要執(zhí)行任務(wù),我們可以創(chuàng)建函數(shù)。一個(gè)函數(shù)可以被多次調(diào)用。 它提供了模塊化和代碼可重用性。
函數(shù)有很多優(yōu)點(diǎn)。它們分別如下 -
(1)代碼可重用性
通過在CC語言中創(chuàng)建函數(shù),開發(fā)人員可以多次調(diào)用它。 所以開發(fā)人員不需要一次又一次地編寫相同的代碼。
(2)代碼優(yōu)化
它使代碼優(yōu)化,我們不需要編寫很多代碼。
假設(shè)你要檢查3個(gè)數(shù)字(781,883和531)是否是素?cái)?shù)。如果不使用函數(shù),需要編寫3次計(jì)算素?cái)?shù)邏輯。所以有重復(fù)的代碼。
但是,如果您使用函數(shù),則只需將計(jì)算的邏輯編寫一次即可重復(fù)使用多次。
C語言編程中有兩種類型的函數(shù):
scanf(),printf(),gets(),puts(),ceil(),floor()等。
C語言中創(chuàng)建函數(shù)的語法如下:
return_type function_name(data_type parameter...){
//code to be executed
}
C語言函數(shù)可以返回或不返回該函數(shù)的值。如果您不需要從函數(shù)返回任何值,請(qǐng)對(duì)返回類型使用void。
我們來看一個(gè)C語言函數(shù)的簡(jiǎn)單示例,它不會(huì)從函數(shù)返回任何值。
沒有返回值的示例:
void hello(){
printf("hello c");// 沒有返回值,只是打印一個(gè)字符串
}
如果要從函數(shù)返回返回某個(gè)/些值,則需要使用任何數(shù)據(jù)類型,如:int,long,char等。返回類型取決于要從函數(shù)返回的值。
我們來看一個(gè)C語言函數(shù)的簡(jiǎn)單例子,它從函數(shù)返回int值。
返回值示例:
int get(){
return 10;
}
在上面的例子中,我們必須返回10作為一個(gè)值,所以返回類型是int。 如果要返回浮點(diǎn)值(例如10.2,3.1,54.5等),則需要指定使用float作為函數(shù)的返回類型。如下所示 -
float get(){
return 10.2;
}
現(xiàn)在,需要來了解如何調(diào)用函數(shù),獲取函數(shù)的返回值。
C語言函數(shù)可能有0個(gè)或更多個(gè)參數(shù)??梢栽贑程序中具有任何類型的參數(shù),如:int,float,char等。參數(shù)也稱為形式參數(shù)。
沒有使用參數(shù)的函數(shù)示例:
void hello(){
printf("hello c");
}
具有1個(gè)參數(shù)的函數(shù)示例:
int cube(int n){
return n*n*n;
}
具有2個(gè)參數(shù)的函數(shù)示例:
int add(int a, int b){
return a+b;
}
如果函數(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_name:function_name是要調(diào)用的函數(shù)的名稱。
(3)arguments:調(diào)用C語言函數(shù)時(shí)需要提供參數(shù)。它也被稱為實(shí)際參數(shù)(簡(jiǎn)稱:實(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
下面來看看看C語言函數(shù)的簡(jiǎn)單程序,它不從函數(shù)返回任何值。創(chuàng)建一個(gè)名稱為:function的工程,并在這個(gè)工程里創(chuàng)建一個(gè)源文件:function-without-params.c,其代碼如下所示 -
#include <stdio.h>
#include <conio.h>
//定義一個(gè)無參數(shù)函數(shù),簡(jiǎn)單地打印一個(gè)字符串
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
我們來看看C語言中一個(gè)帶有參數(shù)的函數(shù)程序。
創(chuàng)建一個(gè)源文件:function-with-params.c,其代碼如下所示 -
#include <stdio.h>
// 定義一函數(shù),返回給定參數(shù)值的立方值
int cube(int n) {
return n*n*n;
}
// 定義一函數(shù),返回給定兩個(gè)參數(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