最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解C語言初階之函數

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

 1.main函數

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

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

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

2.自定義函數

 所謂自定義函數,就是我們自己寫的函數,我們自己設置了他們的功能,將他們進行封裝,在某些時候進行調用。如:

在這里,我們把一個簡單地加法運算進行了封裝。只要在main函數里調用這個定義函數,我們即可實現加法的功能。

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

2.1  函數的的封裝和面向過程的思維

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

3.函數的組成

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

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

函數的調用由三部分組成:返回值、函數名、形參

3.1函數的命名法

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

3.2函數的返回值

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

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

3.2.1void類型

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

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

補充:

1.通常情況下,我們并不建議這么寫,因為我們需要函數功能的獨立性,減少多余的聯系,后面大家會慢慢理解

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

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

注意:函數默認是有返回值,不寫的話會進行強制返回(強制類型轉換為整型),默認返回值為int,有了void,就不會有其他返回值類型來占座

3.3形參與實參

函數調用括號里的參數叫作實參,函數定義括號里的參數叫作形參。

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

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

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

總結

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

相關文章

  • 淺談c++ 字符類型總結區(qū)別wchar_t,char,WCHAR

    淺談c++ 字符類型總結區(qū)別wchar_t,char,WCHAR

    下面小編就為大家?guī)硪黄獪\談c++ 字符類型總結區(qū)別wchar_t,char,WCHAR。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-03-03
  • 仿現代C++智能指針實現引用計數

    仿現代C++智能指針實現引用計數

    這篇文章主要為大家詳細介紹了如何仿現代C++智能指針實現引用計數,文中的示例代碼講解詳細,具有一定的借鑒價值,有需要的小伙伴可以了解下
    2024-03-03
  • c語言輸出字符串中最大對稱子串長度的3種解決方案

    c語言輸出字符串中最大對稱子串長度的3種解決方案

    這篇文章主要介紹了c語言輸出字符串中最大對稱子串長度的3種解決方案,需要的朋友可以參考下
    2014-03-03
  • opencv實現圖像顏色空間轉換

    opencv實現圖像顏色空間轉換

    這篇文章主要為大家詳細介紹了opencv實現圖像顏色空間轉換,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • C語言用fun函數實現兩個數的交換方式

    C語言用fun函數實現兩個數的交換方式

    這篇文章主要介紹了C語言用fun函數實現兩個數的交換方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • C語言實現文件內容按行隨機排列的算法示例

    C語言實現文件內容按行隨機排列的算法示例

    這篇文章主要介紹了C語言實現文件內容按行隨機排列的算法,涉及C語言字符串、數組遍歷與隨機數相關算法實現技巧,需要的朋友可以參考下
    2017-09-09
  • C++遞歸算法實例代碼

    C++遞歸算法實例代碼

    這篇文章主要介紹了C++遞歸算法實例代碼,還是比較不錯的,運用了遞歸算法解決相關問題,這里分享給大家,需要的朋友可以參考下。
    2017-11-11
  • 簡單了解C語言中主線程退出對子線程的影響

    簡單了解C語言中主線程退出對子線程的影響

    這篇文章主要介紹了簡單了解C語言中主線程退出對子線程的影響,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-12-12
  • C語言數據結構之線索二叉樹及其遍歷

    C語言數據結構之線索二叉樹及其遍歷

    這篇文章主要介紹了C語言數據結構之線索二叉樹及其遍歷的相關資料,為了加快查找節(jié)點的前驅和后繼。對二叉樹的線索化就是對二叉樹進行一次遍歷,在遍歷的過程中檢測節(jié)點的左右指針是否為空,如果是空,則將他們改為指向前驅和后繼節(jié)點的線索,需要的朋友可以參考下
    2017-08-08
  • C語言?使用qsort函數來進行快速排序

    C語言?使用qsort函數來進行快速排序

    排序方法有很多種:選擇排序,冒泡排序,歸并排序,快速排序等。?看名字都知道快速排序是目前公認的一種比較好的排序算法。因為他速度很快,所以系統也在庫里實現這個算法,便于我們的使用。?這就是qsort函數
    2022-02-02

最新評論

郁南县| 镇康县| 曲阳县| 大新县| 荃湾区| 健康| 都昌县| 汾阳市| 大新县| 房产| 天台县| 大化| 太谷县| 白银市| 亚东县| 潜山县| 福泉市| 平武县| 哈尔滨市| 综艺| 金乡县| 蓝山县| 石渠县| 武定县| 建始县| 同仁县| 醴陵市| 大竹县| 盐亭县| 牙克石市| 娄烦县| 海原县| 景宁| 博客| 偃师市| 五河县| 通化市| 西盟| 类乌齐县| 府谷县| 岱山县|