在本文開始前·,我們首先要了解什么是函數,這將有助于增進我們對自定義函數的理解。

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