在本文開始前·,我們首先要了解什么是函數(shù),這將有助于增進我們對自定義函數(shù)的理解。
在玄武等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都做網(wǎng)站、成都網(wǎng)站設(shè)計 網(wǎng)站設(shè)計制作定制開發(fā),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),成都品牌網(wǎng)站建設(shè),全網(wǎng)營銷推廣,成都外貿(mào)網(wǎng)站建設(shè)公司,玄武網(wǎng)站建設(shè)費用合理。概念:
在計算機科學(xué)中,子程序(也就是C語言中的函數(shù)),是一個大型程序中的某部分代碼, 由一個或多個語句塊組 成。它負(fù)責(zé)完成某項特定任務(wù),而且相較于其他代 碼,具備相對的獨立性。
一般會有輸入?yún)?shù)并有返回值,提供對過程的封裝和細(xì)節(jié)的隱藏。這些代碼通常被集成為軟 件庫。
在概念中,函數(shù)是“封裝”好的一段程序,在功能和內(nèi)容上具有相對獨立性,程序員們往往通過他來做一種需要多次重復(fù)的過程,這種對函數(shù)的需求是普遍存在的,由此,對最常用函數(shù)的歸納整理也促成了“庫函數(shù)”這一概念的產(chǎn)生。
(庫函數(shù):一般是指編譯器提供的可在c源程序中調(diào)用的函數(shù)??煞譃閮深?,一類是c語言標(biāo)準(zhǔn)規(guī)定的庫函數(shù),一類是編譯器特定的庫函數(shù)。)
那為什么要自定義函數(shù)?問:“庫函數(shù)”中囊括了編程所需要的常用函數(shù),那我們?yōu)槭裁催€要自定義函數(shù)呢?
答:如果庫函數(shù)能干所有的事情,那還要程序員干什么?
自定義函數(shù)作為程序員必備的一項技能,他更多的是對庫函數(shù)的一種補足,當(dāng)庫函數(shù)無法滿足我們的需求時,就需要我們自己在定義一個函數(shù)來達(dá)成目標(biāo)。
如,當(dāng)我們需要一個函數(shù)來判斷兩個整形常量的大小,在編譯器中,C語言并沒有提供相關(guān)的庫函數(shù),這樣我們就要自定義一個函數(shù)來實現(xiàn)這一功能。
-------------正文------------
自定義函數(shù) 基礎(chǔ)篇——— 一、概念通過上方自定義函數(shù)意義的分析,我們可以給自定義函數(shù)下個定義:
定義函數(shù)從字面意思上理解就是自己定義的函數(shù),因為庫函數(shù)不能滿足大家的所有需求,所以有時候需要程序員自己編寫屬于自己的函數(shù)。
二、自定義函數(shù)的構(gòu)成自定義函數(shù)和庫函數(shù)一樣,有函數(shù)名,返回值類型和函數(shù)參數(shù)。
ret_type fun_name(para1, * )
{
statement;//語句項
}
ret_type 返回類型
fun_name 函數(shù)名
para1 函數(shù)參數(shù)
返回類型:返回類型與返回值類型一 一照應(yīng),未標(biāo)明返回值類型時,默認(rèn)返回了為”int“。
函數(shù)名:自己為函數(shù)起的名字,可以由大小寫字母、數(shù)字和字符組成,不能由數(shù)字開頭,且函數(shù)名不能和關(guān)鍵字相同。
函數(shù)參數(shù):分為實參和虛參(下面會講)。
返回類型 + 函數(shù)名(參數(shù)類型+參數(shù),同,......)
{
函數(shù)體;(執(zhí)行部分)
}
注:參數(shù)上限為1024,但過猶不及,多并不代表好
注:不需要返回值或參數(shù)時,可用void代替
(二)創(chuàng)建思路在完成主函數(shù)構(gòu)建后,一般流程可為:
兩個元素
明白函數(shù)要干什么?用什么干?
①干什么?
即:所定義函數(shù)要實現(xiàn)怎樣的功能或效果。
②用什么干?
即:要實現(xiàn)我們想要的效果,函數(shù)需要什么數(shù)據(jù)(參數(shù))。
搭建格式
在明白了“兩個元素”后我們就可以確定函數(shù)的返回類型、參數(shù)類型,這時候我們給函數(shù)起一個合適的名字就可以搭建起函數(shù)的外殼部分。
int max(int x,int y)//返回類型 函數(shù)名(類型+參數(shù)1,類型+參數(shù)2)
{
//函數(shù)體
}
完善函數(shù)內(nèi)容
搭建完函數(shù)框架還要填充函數(shù)的內(nèi)容,通過代碼來賦予他功能。
int max(int x,int y)
{
if (x >y)
return x;
else
return y;
}
測試
高手也會犯錯,在程序未運行起來之前,沒人能保證程序就一定是對的,所以測試也是必不可少的。
二、形參與實參實際參數(shù)(實參): 真實傳給函數(shù)的參數(shù),叫實參。 實參可以是:常量、變量、表達(dá)式、函數(shù)等。 無論實參是何種類型的量,在進行函數(shù)調(diào)用時,它們都必須有確定的值,以便把這些值傳送給形 參。
int a = max(1,14);//“1”和“14”為實參
形式參數(shù)(形參): 形式參數(shù)是指函數(shù)名后括號中的變量,因為形式參數(shù)只有在函數(shù)被調(diào)用的過程中才實例化(分配內(nèi) 存單 元),所以叫形式參數(shù)。形式參數(shù)當(dāng)函數(shù)調(diào)用完成之后就自動銷毀了。因此形式參數(shù)只在函數(shù)中有 效。
即:計算機編譯或運行時,使用某個函數(shù)來完成相關(guān)命令。通俗來講,函數(shù)用了就是調(diào)用。
(二)分類傳值調(diào)用 顧名思義,傳值調(diào)用是將參數(shù)的值傳給函數(shù)。
傳址調(diào)用 傳址調(diào)用是把函數(shù)外部創(chuàng)建變量的內(nèi)存地址傳遞給函數(shù)參數(shù)的一種調(diào)用函數(shù)的方式。
在前文中我們說過“形式參數(shù)只有在函數(shù)被調(diào)用的過程中才實例化(分配內(nèi)存單元)”
也就是說在調(diào)用函數(shù)時,傳來的參數(shù)被存儲在新的、為形參分配的內(nèi)存空間中,可以簡單理解為形參是實參的一份臨時拷貝。
圖片中可以觀察到,a和x的地址不同,所處內(nèi)存空間也不同,只是存儲的值相同。
而本質(zhì)不同,形參變化自然不會改變實參
(二)傳址調(diào)用 和傳值調(diào)用了解了實參和形參的本質(zhì)區(qū)別,我們發(fā)現(xiàn),形參的改變其實是無法對主函數(shù)內(nèi)的形參產(chǎn)生影響的。
那么通過什么途徑使函數(shù)具備改變實參的能力呢?
答案是指針,指針是變量的地址,指針變量是變量,作為變量它當(dāng)然可以作為參數(shù)傳給函數(shù)。
下面做一個實驗,我們將指針作為參數(shù),通過指針來直接找到實參所在的內(nèi)存單元進行改變,再嘗試能否改變實參。
結(jié)果顯而易見,通過指針(地址),我們成功從本質(zhì)上改變了實參。
由此可以得出結(jié)論:
傳值調(diào)用這種傳參方式可以讓函數(shù)和函數(shù)外邊的變量建立起真正的聯(lián)系,也就是函數(shù)內(nèi)部可以直接操 作函數(shù)外部的變量。
(三)總結(jié)傳值調(diào)用和傳址調(diào)用分別有不同的應(yīng)用場景,要結(jié)合實際情況做出選擇。
二、習(xí)題練習(xí)1. 寫一個函數(shù)可以判斷一個數(shù)是不是素數(shù)。 2. 寫一個函數(shù)判斷一年是不是閏年。 3. 寫一個函數(shù),實現(xiàn)一個整形有序數(shù)組的二分查找。 4. 寫一個函數(shù),每調(diào)用一次這個函數(shù),就會將 num 的值增加1。
NB篇———我不會了
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧
標(biāo)題名稱:[c語言]從懵逼到入門,教你如何自定義函數(shù)(用電腦打開,圖片遮文字)-創(chuàng)新互聯(lián)
分享路徑:http://jinyejixie.com/article46/dhdihg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)建站、響應(yīng)式網(wǎng)站、云服務(wù)器、定制開發(fā)、手機網(wǎng)站建設(shè)、服務(wù)器托管
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容