版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
本文格式為Word版,下載可任意編輯——C語言程序中函數(shù)的定義C語言程序中函數(shù)的定義
C語言的函數(shù)問題是困擾好多學(xué)者的問題的,c程序中什么是函數(shù)呢?下面啦我為大家用心推舉的c程序中函數(shù)的定義,夢想能夠?qū)δ兴鲋?/p>
C語言讀書筆記--函數(shù)
先來看看函數(shù)的一般形式,嘗試寫一個(gè)加法的函數(shù):
思路是這樣的:首先得有頭文件,頭文件之后就得寫主函數(shù),主函數(shù)的內(nèi)部理應(yīng)就是加法的過程,我們將全體加法的語句都拿出來組成一個(gè)函數(shù)。代碼如下:
#include
intaddinta,intb;
intmain
intresult=add3,5;
printfsumis%d,result;
return0;
intaddinta,intb
intsum;
sum=a+b;
returnsum;
這是一個(gè)最簡樸的函數(shù),描述了一個(gè)加法函數(shù)的定義和調(diào)用的過程。
intaddinta,intb成為函數(shù)的首部。
有了首部之后,就得考慮一件事情,將首部復(fù)制之后,加上一個(gè)分號,粘貼在主函數(shù)之前,作為函數(shù)的原型聲明。試想,我們在主函數(shù)里邊是不是要先定義變量result才能使用result?那么函數(shù)的道理也是一樣的,當(dāng)程序運(yùn)行到主函數(shù)中語句“intresult=add3,5;”的時(shí)候,假設(shè)向上沒有探索到add的定義,那么編譯器確定就會報(bào)錯。所以要不然添加函數(shù)的原型聲明,要不然就將函數(shù)的定義直接寫在主函數(shù)之前。
函數(shù)首部intaddinta,intb中的第一個(gè)int,即add之前的這個(gè)int稱為函數(shù)的類型。說明這個(gè)函數(shù)將要返回一個(gè)整數(shù)類型的值。這個(gè)類型可以是C語言中任何被允許的數(shù)據(jù)類型,包括void,意為無返回值類型,即這個(gè)函數(shù)不需要返回任何的值。
函數(shù)首部intaddinta,intb中的add稱為函數(shù)的名字,簡稱函數(shù)名。
函數(shù)首部intaddinta,intb中inta和intb稱為函數(shù)的形式參數(shù)。這里形式參數(shù)理論上可以有無窮多個(gè),當(dāng)然,現(xiàn)實(shí)處境下3-5個(gè)就已經(jīng)算是好多了;形式參數(shù)中,即使a和b都是int類型的,也要分別定義才行;形式參數(shù)可以在函數(shù)中直接使用,無須再次定義;形式參數(shù)是用來報(bào)告調(diào)用者,你理應(yīng)給我傳遞來什么樣子的數(shù)據(jù),我好利用你給我的數(shù)據(jù)在函數(shù)中舉行計(jì)算。
intaddinta,intb中的就是函數(shù)體的內(nèi)容了。函數(shù)需要舉行的全體的操作都要放在這對大括號中。想必大家也看到了函數(shù)體中結(jié)果有一條語句是return,這條語句起到的作用就是返回函數(shù)計(jì)算的結(jié)果,在這個(gè)程序中就是將加法的結(jié)果返回給主函數(shù)。需要留神的是,函數(shù)的類型和返回值的類型務(wù)必嚴(yán)格一致!
函數(shù)的定義到此為止,接下來講講函數(shù)的調(diào)用方式。只要定義好函數(shù),通過函數(shù)名實(shí)際參數(shù)1,實(shí)際參數(shù)2,實(shí)際參數(shù)n這種方式就可以調(diào)用函數(shù)了。例如主函數(shù)中的“intresult=add3,5;”,就是調(diào)用了add函數(shù)。這里,3和5稱為實(shí)際參數(shù),即你到底想讓函數(shù)幫你計(jì)算哪兩個(gè)數(shù)的加法結(jié)果,你就在這個(gè)括號里邊寫哪幾個(gè)數(shù)字。務(wù)必要嚴(yán)格遵守的規(guī)定:實(shí)際參數(shù)和形式參數(shù)務(wù)必一一對應(yīng),數(shù)量理應(yīng)一致,類型也保持一致。
理解了這幾點(diǎn)之后,一個(gè)根本的函數(shù)就已經(jīng)可以寫出來了。接下來來個(gè)題目嘗試一下:
輸入精度e,使用公式求π的近似值,精確到結(jié)果一項(xiàng)的十足值小于e。公式:π=1-1/3+1/5-1/7+...
代碼:
//首先得有頭文件
#include
#include//后邊要使用到fabs十足值函數(shù)
//然后就是主函數(shù)了
intmainvoid
doublepi,e;//定義所需變量
doublef_pidoublee;//原型聲明。函數(shù)名只要符合命名規(guī)矩即可//由于要求小于e,所以也將這個(gè)e傳遞過去
printfentere:;//輸入的提示
scanf%lf,e;//double類型的e對應(yīng)%lf,記住不要缺少
printfpi=%lf,f_pie;//函數(shù)返回的是個(gè)double類型的值,直接輸出
return0;
doublef_pidoublee//函數(shù)首部,形參和實(shí)參確定要對應(yīng),可以重名
intdenominator,flag;
doubleitem,sum;
//請留神“先定義,然后賦初值再使用”的好習(xí)慣!!!
flag=1;//負(fù)責(zé)變換正負(fù)符號的變量
denominator=1;//分母初值為1,第一項(xiàng)的1為1/1
item=1.0;//存放每一項(xiàng)的值
sum=0;
whilefabsitem=e//得志條件就循環(huán)
item=flag*1.0/denominator;//計(jì)算每一項(xiàng)的值。flag操縱符號
//1.0務(wù)必寫出小數(shù)位,否那么整項(xiàng)就變成一個(gè)整型值
sum+=item;//累加
flag=-flag;//符號正負(fù)切換
denominator=denominator+2;//分母遞增
returnsum;//sum的類型和函數(shù)的類型務(wù)必一致
函數(shù)的定義和調(diào)用其實(shí)并不難理解,相信好多人困擾在參數(shù)的傳遞上,接下來總結(jié)一下函數(shù)參數(shù)傳遞的幾種方式:
正常的參數(shù)調(diào)用,例如int、float、double等一一對應(yīng)的傳遞。
無參數(shù),也無返回值。例如以下代碼就只是為了輸出一些語句。這種做法在語法上是被允許的,但是并不推舉這么寫。
voidprintf
printfhelloworld!;
3.參數(shù)是數(shù)組的名字。我們知道數(shù)組的名字是個(gè)地址,那么假設(shè)實(shí)參是數(shù)組名的.話,我們可以將形參設(shè)置成指針,指向?qū)崊鬟f過來的數(shù)組的首地址。
4.參數(shù)是指針。假設(shè)實(shí)參是指針,那么形參斷定也得是指針。保持類型一致即可,然后在函數(shù)內(nèi)部再對指針舉行操作。
5.參數(shù)是布局體。假設(shè)實(shí)參是布局體,一般來說我們使用布局體指針來做形參對比適合。
還是在此分割一下吧,說了這么多,可能好多人在問問什么函數(shù)定義這么麻煩,還要定義函數(shù),直接都寫在main函數(shù)中多便當(dāng)?
非也!
C語言是一個(gè)過程化的語言,C語言中的主函數(shù)其實(shí)是用來主導(dǎo)程序的進(jìn)程和數(shù)據(jù)的滾動方向的。假設(shè)將主函數(shù)寫的過于繁雜,我們閱讀程序的布局就會分外的吃力。
C語言中函數(shù)回調(diào)
什么是回調(diào)函數(shù)?
簡而言之,回調(diào)函數(shù)就是一個(gè)通過函數(shù)指針調(diào)用的函數(shù)。假設(shè)你把函數(shù)的指針地址作為參數(shù)傳遞給另一個(gè)函數(shù),當(dāng)這個(gè)指針被用為調(diào)用它所指向的函數(shù)時(shí),我們就說這是回調(diào)函數(shù)。
為什么要使用回調(diào)函數(shù)?
由于可以把調(diào)用者與被調(diào)用者分開。調(diào)用者不關(guān)切誰是被調(diào)用者,全體它需知道的,只是存在一個(gè)具有某種特定原型、某些限制條件如返回值為int的被調(diào)用函數(shù)。
假設(shè)想知道回調(diào)函數(shù)在實(shí)際中有什么作用,先假設(shè)有這樣一種處境,我們要編寫一個(gè)庫,它供給了某些排序算法的實(shí)現(xiàn),如冒泡排序、快速排序、shell排序、shake排序等等,但為使庫更加通用,不想在函數(shù)中嵌入排序規(guī)律,而讓使用者來實(shí)現(xiàn)相應(yīng)的規(guī)律;或者,想讓庫可用于多種數(shù)據(jù)類型int、float、string,此時(shí),該怎么辦呢?可以使用函數(shù)指針,并舉行回調(diào)。
回調(diào)可用于通知機(jī)制,例如,有時(shí)要在程序中設(shè)置一個(gè)計(jì)時(shí)器,每到確定時(shí)間,程序會得到相應(yīng)的通知,但通知機(jī)制的實(shí)現(xiàn)者對我們的程序一無所知。而此時(shí),就需有一個(gè)特定原型的函數(shù)指針,用這個(gè)指針來舉行回調(diào),來通知我們的程序事情已經(jīng)發(fā)生。
下面是自己寫的一個(gè)簡樸的回調(diào)函數(shù),相比其他的那些繁雜的代碼,這個(gè)更輕易理解:
#include
#include
voidperfectintn
inti=1;
intcount=0;
fori=1;in;i++
if0==n%i
count+=i;
ifcount==n
printf%d是完數(shù),n;
elseprintf%d不是完數(shù),n;
voidmyCallbackvoid*perfectint,intn
perfectn;
intmain
intn;
printf請輸入一個(gè)正整數(shù);
scanf%d,n;
myCallbackperfect,n;
return0;
C語言中的刷新和定位函數(shù)
一.fflush
1.fflush的原型如下:
intfflushFILE*stream;
2.當(dāng)需要立刻把輸出緩沖區(qū)的數(shù)據(jù)舉行物理寫入時(shí),理應(yīng)使用這個(gè)函數(shù)。例如調(diào)用fflush函數(shù)保證調(diào)試信息實(shí)際打印出來,而不是保存在緩沖區(qū)中直到以后才打印。
二.定位函數(shù)
1.在正常處境下,數(shù)據(jù)以線性的方式寫入,這意味著后面寫入的數(shù)據(jù)在文件中的位置是在以前全體寫入數(shù)據(jù)的后面。C同時(shí)支持隨機(jī)訪問I/O,也就是以任意依次訪問文件的不同位置。隨機(jī)訪問是通過在讀取或?qū)懭肭?,先定位到文件中需要的位置來?shí)現(xiàn)的。
2.定位函數(shù)原型:
1longftellFILE*stream;
2intfseekFILE*steam,longoffset,intfrom;
3.ftell函數(shù)返回流的當(dāng)前位置。即:下一個(gè)讀取或?qū)懭雽⒁_頭的位置距離文件起始位置的偏移量。該函數(shù)允許保存一個(gè)文件的當(dāng)前位置。
1在二進(jìn)制流中,這個(gè)值就是當(dāng)前位置距離文件起始位置之間的字節(jié)數(shù)。
2在文本流中,這個(gè)值表示一個(gè)位置,但它并不確定切實(shí)地表示當(dāng)前位置和文件起始位置之間的字符數(shù),由于有些系統(tǒng)將對行末字符舉行翻譯轉(zhuǎn)換。但是,ftell函數(shù)返回的值總是可以用于fseek函數(shù)中,作為一個(gè)距離文件起始位置的偏移量。
4.fseek函數(shù)允許你一個(gè)流中定位。這個(gè)函數(shù)將變更下一個(gè)讀取或?qū)懭氩僮鞯奈恢?。它的?個(gè)參數(shù)是需要變更的流。它的第2和第3個(gè)參數(shù)標(biāo)識文件中需要定位的位置。
1試圖定位到一個(gè)文件的起始位置之前是一個(gè)錯誤。定位到文件尾并舉行寫入將擴(kuò)展這個(gè)文件。定位到文件尾之后并舉行讀取將導(dǎo)致返回一條“到達(dá)文件尾”的信息。
2在二進(jìn)制流中,從SEEK_END舉行定位可能不被支持,所以理應(yīng)制止。
3在文本流中,假設(shè)from是SEE
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度出租車公司品牌推廣與營銷合同3篇
- 二零二五年度綠色建筑設(shè)計(jì)與施工技術(shù)服務(wù)合同3篇
- 二零二五年度寵物運(yùn)輸安全責(zé)任保險(xiǎn)合同模板3篇
- 二零二五年度酒店廚房承包與菜品研發(fā)合同匯編3篇
- 二零二五年度瓷磚跨境電商代理銷售合同3篇
- 二零二五年度離婚協(xié)議及子女監(jiān)護(hù)權(quán)歸屬合同(全新版)16篇
- 個(gè)人工程承包協(xié)議書(2024版)10篇
- 二零二五年度海綿城市代建項(xiàng)目合同范本3篇
- 2025年大棚農(nóng)業(yè)物聯(lián)網(wǎng)建設(shè)與應(yīng)用合同4篇
- 二零二五年度創(chuàng)意園區(qū)場地租賃合同范本7篇
- 小學(xué)六年級數(shù)學(xué)上冊《簡便計(jì)算》練習(xí)題(310題-附答案)
- 2023-2024學(xué)年度人教版一年級語文上冊寒假作業(yè)
- 培訓(xùn)如何上好一堂課
- 高教版2023年中職教科書《語文》(基礎(chǔ)模塊)下冊教案全冊
- 2024醫(yī)療銷售年度計(jì)劃
- 稅務(wù)局個(gè)人所得稅綜合所得匯算清繳
- 人教版語文1-6年級古詩詞
- 上學(xué)期高二期末語文試卷(含答案)
- 軟件運(yùn)維考核指標(biāo)
- 空氣動力學(xué)仿真技術(shù):格子玻爾茲曼方法(LBM)簡介
- 比較思想政治教育學(xué)
評論
0/150
提交評論