欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解C語言初階之函數(shù)

 更新時(shí)間:2021年11月12日 10:57:40   作者:鯨落之·海  
這篇文章主要介紹了C語言中的初階函數(shù),介紹了其相關(guān)概念,具有一定參考價(jià)值。需要的朋友可以了解下,希望能夠給你帶來幫助

 1.main函數(shù)

第一個(gè)函數(shù)是我們的main函數(shù),它無處不在,main函數(shù)被稱之為我們的入口函數(shù),程序在運(yùn)行時(shí),從main函數(shù)進(jìn)入,從main函數(shù)出來,main函數(shù)其實(shí)就是整個(gè)程序功能的集合,所有的功能必須被包含在main里面才可以被運(yùn)行(預(yù)處理命令,宏定義,全局變量什么的當(dāng)然要優(yōu)先處理,再次不討論這些)。我們看個(gè)例子吧

上圖中,一個(gè)很簡單的打印,卻發(fā)現(xiàn)main函數(shù)之外的打印出現(xiàn)了錯(cuò)誤,由此說明main的重要型。

     說白了,函數(shù)就是一個(gè)個(gè)功能的集合,內(nèi)部也是一串串代碼組成的程序,是程序的基本單元,又被叫作子程序,我們將函數(shù)分為庫函數(shù)和自定義函數(shù),再次我們主要了解自定義函數(shù)。

2.自定義函數(shù)

 所謂自定義函數(shù),就是我們自己寫的函數(shù),我們自己設(shè)置了他們的功能,將他們進(jìn)行封裝,在某些時(shí)候進(jìn)行調(diào)用。如:

在這里,我們把一個(gè)簡單地加法運(yùn)算進(jìn)行了封裝。只要在main函數(shù)里調(diào)用這個(gè)定義函數(shù),我們即可實(shí)現(xiàn)加法的功能。

那么,有人問了,我們?yōu)槭裁捶且獙懸粋€(gè)函數(shù)呢,看起來就很麻煩,直接寫到main函數(shù)里不就行了嗎?

2.1  函數(shù)的的封裝和面向過程的思維

      實(shí)際上,我們在應(yīng)用中不可能寫如此簡單的小程序,我們會(huì)寫很長的代碼(比如我們在剛剛的程序中加上減法、除法、乘法、求余、求次方等等),很多的功能,如果我們?nèi)珜懺趍ain函數(shù)里,代碼的可讀性就會(huì)變得極差,而且main函數(shù)不僅會(huì)變得十分冗長,對(duì)于代碼的調(diào)試和修改以及后期維護(hù)都難以進(jìn)行。因此,我們把所有功能都進(jìn)行封裝打包,扔到我們自己的一個(gè)函數(shù)里,每一個(gè)函數(shù)都有想對(duì)應(yīng)的功能(一般來說,我們要盡量加大自定義函數(shù)的獨(dú)立性,方便函數(shù)的封裝和后期維護(hù)),如此一來,我們就有了業(yè)務(wù)邏輯(想要程序?qū)崿F(xiàn)的功能,如加法,就在main函數(shù)里面調(diào)用Add)和功能邏輯(再對(duì)Add進(jìn)行定義),main函數(shù)就變得十分簡潔明了,只需要用到哪些功能時(shí),直接調(diào)用就行了,我們將功能邏輯的功能稱之為解耦。在編寫代碼時(shí),我們要首先知道我們想要實(shí)現(xiàn)什么功能,在主函數(shù)里對(duì)某一個(gè)可以實(shí)現(xiàn)該功能的函數(shù)先進(jìn)行調(diào)用,等主函數(shù)完備后,再講我們封裝的功能進(jìn)行定義,以配合我們的調(diào)用。我們把這種編程思維,稱之為面向過程,即先明白要實(shí)現(xiàn)什么功能(對(duì)象)后,還需要對(duì)每一個(gè)功能進(jìn)行具體構(gòu)建(對(duì)象的構(gòu)建),而不是直接調(diào)用該功能,比如我們要木材,就必須要自己種木頭,澆花施肥,然后再取用,而不能直接去木材市場買,我們需要過程。

3.函數(shù)的組成

函數(shù)需要有定義之后才能調(diào)用,某些時(shí)候還需要聲明(我們先不談聲明)

函數(shù)的定義由四部分組成:返回值(也叫函數(shù)類型)、函數(shù)名 、函數(shù)體 、形參

函數(shù)的調(diào)用由三部分組成:返回值、函數(shù)名、形參

3.1函數(shù)的命名法

為了增加可讀性,和減少維護(hù)成本,我們通常把函數(shù)的命名方法定為見名知意,將名字按照大駝峰法進(jìn)行命名(如加法及 Add,我的打印及 MyPrint)函數(shù)名以英文單詞或者英文單詞的簡寫構(gòu)成,每個(gè)單詞的第一個(gè)字母大寫。

3.2函數(shù)的返回值

函數(shù)的返回值類型有int、char、double等各種類型,具體看你需要的功能。

如在剛剛的Add中,我們需要Add函數(shù)返回x和y的和(即返回一個(gè)整型,便于函數(shù)值的接收),因此我們需要在Add前面加int,如此我們便可以用int ret來接收函數(shù)值。

3.2.1void類型

在各種函數(shù)的返回值中,有一個(gè)奇怪卻又常用的類型,叫作void(也就是空的意思),其實(shí),它就是個(gè)占位子的,啥都不返回(我就站這兒,告訴別人這里這個(gè)座有人了)

如圖所示,我們把printf放在了Add里面,如此來,我們就不需要接收Add的返回值來進(jìn)行打印了,這個(gè)函數(shù)本身就有了打印的功能,因此我們把返回值(也就是函數(shù)類型寫為void),也就是沒有返回值。比如main函數(shù)也可以直接void main。

補(bǔ)充:

1.通常情況下,我們并不建議這么寫,因?yàn)槲覀冃枰瘮?shù)功能的獨(dú)立性,減少多余的聯(lián)系,后面大家會(huì)慢慢理解

2.main 函數(shù)建議以int作為返回值,代碼規(guī)范是一個(gè)優(yōu)秀程序員的基本素養(yǎng)。特立獨(dú)行并不會(huì)讓你變得優(yōu)秀,優(yōu)秀的代碼是大多數(shù)人都能明白的代碼

3.既然返回值已經(jīng)為空,那我直接不寫不行嗎,為什么還要寫一個(gè)void呢?

注意:函數(shù)默認(rèn)是有返回值,不寫的話會(huì)進(jìn)行強(qiáng)制返回(強(qiáng)制類型轉(zhuǎn)換為整型),默認(rèn)返回值為int,有了void,就不會(huì)有其他返回值類型來占座

3.3形參與實(shí)參

函數(shù)調(diào)用括號(hào)里的參數(shù)叫作實(shí)參,函數(shù)定義括號(hào)里的參數(shù)叫作形參。

實(shí)參就是試試在在的真是的數(shù)據(jù),就如同一張桌子,你砸了它一角,那這張桌子一角就真的沒了。

形參本質(zhì)上是對(duì)實(shí)參的臨時(shí)拷貝(程序從主函數(shù)中運(yùn)行到函數(shù)的調(diào)用時(shí),就會(huì)自動(dòng)在主函數(shù)前尋找該函數(shù)的定義,若發(fā)現(xiàn)定義,就會(huì)發(fā)生形參實(shí)例化,即將實(shí)參拷貝到形參里),還是一張桌子,發(fā)生形參實(shí)例化(臨時(shí)拷貝)之后,就變成了兩張桌子,現(xiàn)在你砸了第二張桌子,那第一張桌子依舊完好無損。而不管第二張桌子是是否損傷,只要出了它所在的代碼塊,它就會(huì)被銷毀掉,而不能被其他函數(shù)繼續(xù)使用,所以我們稱之為臨時(shí)拷貝。

上圖,我們發(fā)現(xiàn),在函數(shù)定義內(nèi)拷貝參數(shù)改變的值并不會(huì)影響原值。這種參數(shù)傳遞方式我們叫做傳值。

總結(jié)

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!

相關(guān)文章

  • VC++創(chuàng)建msi文件的方法

    VC++創(chuàng)建msi文件的方法

    這篇文章主要介紹了VC++創(chuàng)建msi文件的方法,對(duì)于應(yīng)用程序的開發(fā)有一定的借鑒價(jià)值,需要的朋友可以參考下
    2014-07-07
  • C語言超詳細(xì)講解指針的概念與使用

    C語言超詳細(xì)講解指針的概念與使用

    本文主要講解C語言中指針和字符串的關(guān)系以及指針和數(shù)組的關(guān)系,在看本文之前大家可以先看看博主之前的C語言基礎(chǔ)篇,先對(duì)C語言指針先有個(gè)基礎(chǔ)的了解,有助于對(duì)本文章有更深一步的了解
    2022-05-05
  • C++實(shí)現(xiàn)類似延時(shí)停頓的打字效果

    C++實(shí)現(xiàn)類似延時(shí)停頓的打字效果

    這篇文章主要介紹的是使用C++實(shí)現(xiàn)類似延時(shí)停頓的打字效果的代碼,非常的簡單,推薦給大家,有需要的小伙伴可以參考下。
    2015-03-03
  • c++獲取sqlite3數(shù)據(jù)庫表中所有字段的方法小結(jié)

    c++獲取sqlite3數(shù)據(jù)庫表中所有字段的方法小結(jié)

    本文給大家分享c++獲取sqlite3數(shù)據(jù)庫表中所有字段的三種常用方法,本文針對(duì)每一種方法給大家詳細(xì)介紹,需要的的朋友通過本文一起學(xué)習(xí)吧
    2016-11-11
  • c++代碼各種注釋示例詳解

    c++代碼各種注釋示例詳解

    大家好,本篇文章主要講的是c++代碼各種注釋示例詳解,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • C++實(shí)現(xiàn)旋轉(zhuǎn)數(shù)組的二分查找

    C++實(shí)現(xiàn)旋轉(zhuǎn)數(shù)組的二分查找

    這篇文章主要介紹了C++實(shí)現(xiàn)旋轉(zhuǎn)數(shù)組的二分查找方法,涉及數(shù)組的操作,有值得借鑒的技巧,需要的朋友可以參考下
    2014-09-09
  • VSCODE+cmake配置C++開發(fā)環(huán)境的實(shí)現(xiàn)步驟

    VSCODE+cmake配置C++開發(fā)環(huán)境的實(shí)現(xiàn)步驟

    這篇文章主要介紹了VSCODE+cmake配置C++開發(fā)環(huán)境的實(shí)現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • 基于C語言實(shí)現(xiàn)見縫插針游戲的示例代碼

    基于C語言實(shí)現(xiàn)見縫插針游戲的示例代碼

    見縫插針游戲就是使用鼠標(biāo)左鍵點(diǎn)擊發(fā)射針,當(dāng)兩個(gè)針的夾角小于一定限制時(shí),游戲結(jié)束。本文將用C語言實(shí)現(xiàn)這一有趣游戲,感興趣的可以了解一下
    2022-11-11
  • C++模板非類型形參的詳細(xì)講解

    C++模板非類型形參的詳細(xì)講解

    這篇文章主要給大家介紹了關(guān)于C++模板非類型形參的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作就有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2021-11-11
  • C++實(shí)現(xiàn)高校人員信息管理系統(tǒng)

    C++實(shí)現(xiàn)高校人員信息管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)高校人員信息管理系統(tǒng)項(xiàng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-06-06

最新評(píng)論