日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

C语言自定义函数

發(fā)布時(shí)間:2025/3/12 编程问答 53 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言自定义函数 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

函數(shù)是一段可以重復(fù)使用的代碼,用來(lái)獨(dú)立地完成某個(gè)功能,它可以接收用戶傳遞的數(shù)據(jù),也可以不接收。接收用戶數(shù)據(jù)的函數(shù)在定義時(shí)要指明參數(shù),不接收用戶數(shù)據(jù)的不需要指明,根據(jù)這一點(diǎn)可以將函數(shù)分為有參函數(shù)和無(wú)參函數(shù)

將代碼段封裝成函數(shù)的過(guò)程叫做函數(shù)定義。

C語(yǔ)言無(wú)參函數(shù)的定義

如果函數(shù)不接收用戶傳遞的數(shù)據(jù),那么定義時(shí)可以不帶參數(shù)。

示例

dataType functionName(){//body } dataType 是返回值類型,它可以是C語(yǔ)言中的任意數(shù)據(jù)類型,例如 int、float、char 等。functionName 是函數(shù)名,它是標(biāo)識(shí)符的一種,命名規(guī)則和標(biāo)識(shí)符相同。函數(shù)名后面的括號(hào)( )不能少。body 是函數(shù)體,它是函數(shù)需要執(zhí)行的代碼,是函數(shù)的主體部分。即使只有一個(gè)語(yǔ)句,函數(shù)體也要由{ }包圍。如果有返回值,在函數(shù)體中使用 return 語(yǔ)句返回。return 出來(lái)的數(shù)據(jù)的類型要和 dataType 一樣。

定義一個(gè)函數(shù),計(jì)算從 1 加到 100 的結(jié)果:

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

累加結(jié)果保存在變量sum中,最后通過(guò)return語(yǔ)句返回。sum 是 int 型,返回值也是 int 類型,它們一一對(duì)應(yīng)。

return是C語(yǔ)言中的一個(gè)關(guān)鍵字,只能用在函數(shù)中,用來(lái)返回處理結(jié)果。

將上面的代碼補(bǔ)充完整:

#include <stdio.h>int 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\n", a);return 0; }

運(yùn)行結(jié)果:

The sum is 5050

函數(shù)不能嵌套定義,main 也是一個(gè)函數(shù)定義,所以要將 sum 放在 main 外面。函數(shù)必須先定義后使用,所以 sum 要放在 main 前面。

注意:main 是函數(shù)定義,不是函數(shù)調(diào)用。當(dāng)可執(zhí)行文件加載到內(nèi)存后,系統(tǒng)從 main 函數(shù)開始執(zhí)行,也就是說(shuō),系統(tǒng)會(huì)調(diào)用我們定義的 main 函數(shù)。

無(wú)返回值函數(shù)

有的函數(shù)不需要返回值,或者返回值類型不確定,那么可以用 void 表示。

示例

void hello(){printf ("Hello,world \n");//沒(méi)有返回值就不需要 return 語(yǔ)句 }

void是C語(yǔ)言中的一個(gè)關(guān)鍵字,表示“空類型”或“無(wú)類型”,絕大部分情況下也就意味著沒(méi)有 return 語(yǔ)句。

C語(yǔ)言有參函數(shù)的定義

如果函數(shù)需要接收用戶傳遞的數(shù)據(jù),那么定義時(shí)就要帶上參數(shù)。如下所示:

dataType functionName( dataType1 param1, dataType2 param2 ... ){//body }

dataType1 param1, dataType2 param2 …是參數(shù)列表。函數(shù)可以只有一個(gè)參數(shù),也可以有多個(gè),多個(gè)參數(shù)之間由,分隔。參數(shù)本質(zhì)上也是變量,定義時(shí)要指明類型和名稱。與無(wú)參函數(shù)的定義相比,有參函數(shù)的定義僅僅是多了一個(gè)參數(shù)列表。

數(shù)據(jù)通過(guò)參數(shù)傳遞到函數(shù)內(nèi)部進(jìn)行處理,處理完成以后再通過(guò)返回值告知函數(shù)外部。

計(jì)算從 m 加到 n 的結(jié)果:

int sum(int m, int n){int i, sum=0;for(i=m; i<=n; i++){sum+=i;}return sum; }

參數(shù)列表中給出的參數(shù)可以在函數(shù)體中使用,使用方式和普通變量一樣。

調(diào)用 sum() 函數(shù)時(shí),需要給它傳遞兩份數(shù)據(jù),一份傳遞給 m,一份傳遞給 n。你可以直接傳遞整數(shù),例如:

int result = sum(1, 100); //1傳遞給m,100傳遞給n

也可以傳遞變量:

int begin = 4; int end = 86; int result = sum(begin, end); //begin傳遞給m,end傳遞給n

也可以整數(shù)和變量一起傳遞:

int num = 33; int result = sum(num, 80); //num傳遞給m,80傳遞給n

函數(shù)定義時(shí)給出的參數(shù)稱為形式參數(shù),簡(jiǎn)稱形參函數(shù)調(diào)用時(shí)給出的參數(shù)(也就是傳遞的數(shù)據(jù))稱為實(shí)際參數(shù),簡(jiǎn)稱實(shí)參。函數(shù)調(diào)用時(shí),將實(shí)參的值傳遞給形參,相當(dāng)于一次賦值操作。

原則上講,實(shí)參的類型和數(shù)目要與形參保持一致。如果能夠進(jìn)行自動(dòng)類型轉(zhuǎn)換,或者進(jìn)行了強(qiáng)制類型轉(zhuǎn)換,那么實(shí)參類型也可以不同于形參類型,例如將 int 類型的實(shí)參傳遞給 float 類型的形參就會(huì)發(fā)生自動(dòng)類型轉(zhuǎn)換。

將上面的代碼補(bǔ)充完整:

#include <stdio.h>int sum(int m, int n){int i, sum=0;for(i=m; i<=n; i++){sum+=i;}return sum; }int main(){int begin = 5, end = 86;int result = sum(begin, end);printf("The sum from %d to %d is %d\n", begin, end, result);return 0; }

運(yùn)行結(jié)果:

The sum from 5 to 86 is 3731

定義 sum() 時(shí),參數(shù) m、n 的值都是未知的;調(diào)用 sum() 時(shí),將 begin、end 的值分別傳遞給 m、n,這和給變量賦值的過(guò)程是一樣的,它等價(jià)于:

m = begin; n = end;

函數(shù)不能嵌套定義

C語(yǔ)言不允許函數(shù)嵌套定義;也就是說(shuō),不能在一個(gè)函數(shù)中定義另外一個(gè)函數(shù),必須在所有函數(shù)之外定義另外一個(gè)函數(shù)。main() 也是一個(gè)函數(shù)定義,也不能在 main() 函數(shù)內(nèi)部定義新函數(shù)。

錯(cuò)誤示例

#include <stdio.h>void func1(){printf("http://www.baidu.com");void func2(){printf("百度搜索引擎");} }int main(){func1();return 0; }

我們可能會(huì)認(rèn)為在 func1() 內(nèi)部定義 func2(),那么調(diào)用 func1() 時(shí)也就調(diào)用了 func2(),這是錯(cuò)誤的。

正確的示例:

#include <stdio.h>void func2(){printf("百度搜索引擎"); }void func1(){printf("http://www.baidu.com");func2(); }int main(){func1();return 0; }

func1()、func2()、main() 三個(gè)函數(shù)是平行的,誰(shuí)也不能位于誰(shuí)的內(nèi)部,要想達(dá)到「調(diào)用 func1() 時(shí)也調(diào)用 func2()」的目的,必須將 func2() 定義在 func1() 外面,并在 func1() 內(nèi)部調(diào)用 func2()。

如果感覺(jué)不錯(cuò)的話請(qǐng)點(diǎn)贊喲!!!

總結(jié)

以上是生活随笔為你收集整理的C语言自定义函数的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。