0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

函數(shù)與遞歸-1

汽車電子技術(shù) ? 來(lái)源:微亮筆記 ? 作者: PASSION ? 2023-02-21 15:50 ? 次閱讀

本期介紹C語(yǔ)言函數(shù)與遞歸部分的筆記。在我看來(lái),如果說(shuō)各種循環(huán)與分支是一個(gè)系統(tǒng)的骨架的話,那么形式繁多的函數(shù)就是C語(yǔ)言的血肉了,正是各式各樣的函數(shù)決定了C語(yǔ)言的各種功能。那么話不多說(shuō),既然函數(shù)如此重要,那就快跟我一起了解函數(shù)吧圖片圖片(ps:此部分內(nèi)容較多,將會(huì)分成多期來(lái)更新吖)

本章主要掌握函數(shù)的基本使用和遞歸

1.函數(shù)是什么

2.庫(kù)函數(shù)的定義及使用查找方法

3.自定義函數(shù)的定義及使用方法

4.函數(shù)參數(shù)的類型

  • 函數(shù)是什么?-----“子程序

    在計(jì)算機(jī)科學(xué)中,子程序是一個(gè)大型程序中的部分代碼,由一個(gè)或多個(gè)語(yǔ)句塊組成。它負(fù)責(zé)完成某項(xiàng)特定任務(wù),而且相較于其他代碼來(lái)說(shuō)具備相對(duì)的獨(dú)立性。

    一般會(huì)有輸入參數(shù)并有返回值,提供對(duì)過(guò)程的封裝和對(duì)細(xì)節(jié)的隱藏。這些代碼通常被集成為軟件庫(kù)。C語(yǔ)言函數(shù)分為兩類:庫(kù)函數(shù)和自定義函數(shù)。

  • 庫(kù)函數(shù)

    為什么會(huì)存在庫(kù)函數(shù)?

    我們?cè)诰帉懘a時(shí),總會(huì)頻繁地使用一些基本的功能,比如打?。╬rintf),字符拷貝(strcpy),n的k次方數(shù)學(xué)運(yùn)算(pow)..........當(dāng)我們需要使用這些功能時(shí),如果臨時(shí)編寫就會(huì)很麻煩,為了支持可移植性和提高程序的效率,C語(yǔ)言的基礎(chǔ)庫(kù)中提供了一系列庫(kù)函數(shù),方便大家進(jìn)行程序開發(fā)。

    庫(kù)函數(shù)的種類和數(shù)量有很多,在使用時(shí)我們不需要也不可能將所有的庫(kù)函數(shù)使用方法及細(xì)節(jié)全部背下來(lái),只需要像查字典一樣用一個(gè)查一個(gè)就行了圖片圖片

    那么C語(yǔ)言的字典是什么呢?下面我會(huì)提供幾個(gè)權(quán)威的網(wǎng)站供大家參考,鏈接如下:

    http://cplusplus.com

    http://cppreference.com

    以上網(wǎng)站都非常實(shí)用奧~~~

    當(dāng)然我們?cè)谑褂脦?kù)函數(shù)之前一定要記住先聲明用**#include**所引用的頭文件,比如在使用printf函數(shù)時(shí)需引用,使用pow函數(shù)時(shí)需引用頭文件等等,這些在上述網(wǎng)站也是可以查到的圖片圖片

  • 自定義函數(shù)

    庫(kù)函數(shù)雖功能強(qiáng)大,但還是遠(yuǎn)遠(yuǎn)無(wú)法滿足我們編程需求

    所以更重要的是 自定義函數(shù)

    自定義函數(shù)和庫(kù)函數(shù)一樣,有函數(shù)名,返回值類型和函數(shù)參數(shù)。但不一樣的是這些都需要我們自己來(lái)設(shè)計(jì),這就給了程序員很大的發(fā)揮空間,話不多說(shuō),我們接下來(lái)動(dòng)手寫一個(gè)簡(jiǎn)單的自定義函數(shù):

  • void swap(int x,int y)//返回值類型,函數(shù)名,函數(shù)參數(shù)
    {
      int tmp=0;
      tmp=x;
      x=y;
      y=tmp;
    }//函數(shù)體
    

    這樣,我們就完成了一個(gè)函數(shù),它的功能是交換兩個(gè)參數(shù)的值,但這個(gè)函數(shù)在具體使用時(shí)仍有問(wèn)題,不過(guò)它可以幫助我們了解自定義函數(shù)的幾大要素:返回值類型 ,函數(shù)名,函數(shù)參數(shù)和函數(shù)主體。

    需要注意的是,由于是“自定義”函數(shù),我們?cè)谄鹈麜r(shí)可以像給游戲角色起名一樣隨意起,但是并不推薦大家這樣做,舉個(gè)栗子圖片

int add(int x,int y)
{
  int z=0;
  z=x-y;
  return z;
  }

這樣我們就定義了一個(gè)看似非常"合理"的函數(shù),說(shuō)它合理是因?yàn)榇撕瘮?shù)完全符合自定義函數(shù)定義規(guī)則,但是我們把一個(gè)執(zhí)行減法功能的函數(shù)命名為“add”,這顯然會(huì)引起歧義,為了使我們的代碼具有可移植性并且提高程序的運(yùn)行效率,我推薦大家根據(jù)函數(shù)功能來(lái)命名圖片圖片

函數(shù)的參數(shù)

實(shí)際參數(shù)(實(shí)參)

真實(shí)傳遞給函數(shù)的參數(shù)叫實(shí)參。實(shí)參可以是:常量,變量,表達(dá)式,函數(shù)等等。無(wú)論實(shí)參是何種類型的常量,在進(jìn)行函數(shù)調(diào)用時(shí),它們都必須有確定的值,以便把這些確定的值傳遞給形參

** 形式參數(shù)(形參)**

形式參數(shù)是指函數(shù)在定義時(shí)括號(hào)中的變量,因?yàn)閰?shù)形式只有函數(shù)被調(diào)用的過(guò)程才實(shí)例化,所以叫形式參數(shù)。形式參數(shù)在函數(shù)調(diào)用完成后就自動(dòng)銷毀了。因此形式參數(shù)只在函數(shù)中有效。

只看定義當(dāng)然很難理解,我們上函數(shù)圖片圖片

int get_max(int x,int y)//括號(hào)內(nèi)是形式參數(shù)
{
  if (x>y)
    return 0;
  else
    return y;
 }//以上是對(duì)一個(gè)自定義函數(shù)的定義過(guò)程
 int main()
 {
   int a=10;
   int b=20;
   int max=get_max(a,b);//實(shí)際參數(shù),必須有實(shí)際的值,可以放變量
   printf("max=%d",max)
   max=get_max(100,300+1);//也可以放實(shí)際的值
   max=get_max(100,get_max(3,7));//還可以放另一個(gè)函數(shù)
   printf("max=%d",max);
 }

大家如果還是覺得難以理解,那我舉個(gè)具體的例子:

求一個(gè)長(zhǎng)方形的面積,我們首先要套用公式“s=a*b”

比如該長(zhǎng)方形長(zhǎng)是5,寬是4,我們就要將5和4帶入到上面的公式里得出面積為5*4=20

在上述過(guò)程中,a,b就是形式參數(shù),而具體的值像4,5就是實(shí)際參數(shù)

在使用時(shí)實(shí)際參數(shù)要把值傳遞給形式參數(shù),在函數(shù)體內(nèi)進(jìn)行相應(yīng)運(yùn)算后得出結(jié)果再傳遞出來(lái)。這就是函數(shù)調(diào)用的其中一種方式:傳值調(diào)用。而這里就涉及到了函數(shù)的調(diào)用,篇幅有限,我們下期再繼續(xù)介紹相關(guān)知識(shí),這里就不贅述了

ok,到此我們本期的內(nèi)容就結(jié)束了,祝大家寒假愉快!圖片圖片

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • C語(yǔ)言
    +關(guān)注

    關(guān)注

    180

    文章

    7581

    瀏覽量

    135582
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4260

    瀏覽量

    62230
  • 循環(huán)
    +關(guān)注

    關(guān)注

    0

    文章

    92

    瀏覽量

    15939
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    數(shù)據(jù)結(jié)構(gòu)與算法:1-4-1-函數(shù)遞歸(1)#結(jié)構(gòu)數(shù)據(jù)

    數(shù)據(jù)結(jié)構(gòu)與算法
    學(xué)習(xí)硬聲知識(shí)
    發(fā)布于 :2022年12月18日 10:14:48

    《C Primer Plus》讀書筆記——遞歸

    Fibonacci(n-1) + Fibonacci(n-2); elsereturn 1;}雙重遞歸。 致命弱點(diǎn):每級(jí)調(diào)用變量數(shù)以指數(shù)遞增!Something interesting …main( )也可以被自身
    發(fā)表于 02-05 20:06

    LabVIEW遞歸

    感受到了遞歸的復(fù)雜和重要性。在愛因斯坦這一問(wèn)題中,程序設(shè)計(jì)的時(shí)候反復(fù)遞歸,一個(gè)遞歸函數(shù)再調(diào)用另外一個(gè)遞歸
    發(fā)表于 02-19 11:52

    Labview遞歸函數(shù)的使用案例

    Labview遞歸函數(shù)的使用案例,簡(jiǎn)單的1+2+3...+100求和,簡(jiǎn)單易懂,充分理解遞歸函數(shù)的思想
    發(fā)表于 10-09 09:37

    C++教程之函數(shù)遞歸調(diào)用

    C++教程之函數(shù)遞歸調(diào)用 在執(zhí)行函數(shù) f 的過(guò)程中,又要調(diào)用 f 函數(shù)本身,稱為函數(shù)遞歸調(diào)
    發(fā)表于 05-15 18:00 ?35次下載

    遞歸指的是在函數(shù)的定義中使用函數(shù)自身的方法

    C語(yǔ)言支持遞歸,即一個(gè)函數(shù)可以調(diào)用其自身。但在使用遞歸時(shí),程序員需要注意定義一個(gè)從函數(shù)退出的條件,否則會(huì)進(jìn)入死循環(huán)。遞歸
    的頭像 發(fā)表于 11-12 15:06 ?7047次閱讀

    C++的實(shí)驗(yàn)教程之函數(shù)遞歸算法資料免費(fèi)下載

    函數(shù)遞歸算法 1.范例:求組合數(shù), 一、實(shí)驗(yàn)?zāi)康?b class='flag-5'>1. 學(xué)會(huì)解決簡(jiǎn)單的遞歸算法。2. 掌握函數(shù)
    發(fā)表于 01-29 10:51 ?2次下載
    C++的實(shí)驗(yàn)教程之<b class='flag-5'>函數(shù)</b>的<b class='flag-5'>遞歸</b>算法資料免費(fèi)下載

    所有遞歸代碼都可以轉(zhuǎn)為非遞歸代碼

    之所以所有的遞歸都能轉(zhuǎn)為迭代算法是因?yàn)?b class='flag-5'>遞歸借助函數(shù)調(diào)用,函數(shù)調(diào)用本身就是基于調(diào)用棧這種結(jié)構(gòu)實(shí)現(xiàn)的,只不過(guò)這一切都是自動(dòng)完成的,我們當(dāng)然也可以用代碼手動(dòng)模擬出來(lái)。
    的頭像 發(fā)表于 04-19 15:02 ?1992次閱讀

    C語(yǔ)言-內(nèi)聯(lián)函數(shù)、遞歸函數(shù)、指針函數(shù)

    這篇文章介紹C語(yǔ)言的內(nèi)聯(lián)函數(shù)遞歸函數(shù)、函數(shù)指針、指針函數(shù)、局部地址、const關(guān)鍵字、extern關(guān)鍵字等知識(shí)點(diǎn);這些知識(shí)點(diǎn)在實(shí)際項(xiàng)目開發(fā)
    的頭像 發(fā)表于 08-14 10:03 ?1611次閱讀

    遞歸代碼都轉(zhuǎn)為非遞歸可以嗎

    之所以所有的遞歸都能轉(zhuǎn)為迭代算法是因?yàn)?b class='flag-5'>遞歸借助函數(shù)調(diào)用,函數(shù)調(diào)用本身就是基于調(diào)用棧這種結(jié)構(gòu)實(shí)現(xiàn)的,只不過(guò)這一切都是自動(dòng)完成的,我們當(dāng)然也可以用代碼手動(dòng)模擬出來(lái)。
    的頭像 發(fā)表于 02-17 14:35 ?698次閱讀
    <b class='flag-5'>遞歸</b>代碼都轉(zhuǎn)為非<b class='flag-5'>遞歸</b>可以嗎

    Python支持遞歸函數(shù)

    Python支持遞歸函數(shù)——即直接或間接地調(diào)用自身以進(jìn)行循環(huán)的函數(shù)。遞歸是頗為高級(jí)的話題,并且它在Python中相對(duì)少見。然而,它是一項(xiàng)應(yīng)該了解的有用的技術(shù),因?yàn)樗试S程序遍歷擁有任意
    的頭像 發(fā)表于 02-21 14:28 ?602次閱讀

    函數(shù)遞歸-3

    程序調(diào)用自身的編程技巧稱為遞歸(recursion)。遞歸作為一種算法在程序設(shè)計(jì)語(yǔ)言中廣泛應(yīng)用。一個(gè)過(guò)程或函數(shù)在其定義或說(shuō)明中有直接或間接調(diào)用自身的一種方法,它通常把一個(gè)大型復(fù)雜的問(wèn)題層層轉(zhuǎn)化為一個(gè)
    的頭像 發(fā)表于 02-21 15:57 ?533次閱讀

    什么是Python的遞歸函數(shù)

    遞歸函數(shù)必須有終止條件。編程中,函數(shù)的調(diào)用要占用名叫棧(stack)的內(nèi)存空間。調(diào)用函數(shù)時(shí),程序會(huì)將相關(guān)的數(shù)據(jù)存儲(chǔ)到計(jì)算機(jī)的棧里。
    的頭像 發(fā)表于 02-23 10:25 ?1732次閱讀

    C語(yǔ)言,你真的懂遞歸了嗎?

    要說(shuō)到遞歸如果不說(shuō)棧的話,我覺得有點(diǎn)不合適,遞歸特點(diǎn)就是不斷的調(diào)用同一個(gè)函數(shù),如果這個(gè)函數(shù)沒(méi)有一個(gè)遞歸界限,那么就是死循環(huán)了,所以討論
    的頭像 發(fā)表于 06-06 15:24 ?928次閱讀
    C語(yǔ)言,你真的懂<b class='flag-5'>遞歸</b>了嗎?

    關(guān)于C語(yǔ)言中的遞歸

    遞歸指的是在函數(shù)的定義中使用函數(shù)自身的方法。
    發(fā)表于 02-26 10:34 ?307次閱讀
    關(guān)于C語(yǔ)言中的<b class='flag-5'>遞歸</b>