<kbd id="9plqc"><label id="9plqc"></label></kbd>

        <th id="9plqc"></th>
        1. <center id="9plqc"><video id="9plqc"></video></center>
          <sub id="9plqc"><form id="9plqc"><pre id="9plqc"></pre></form></sub>
          <nav id="9plqc"><form id="9plqc"><legend id="9plqc"></legend></form></nav>
          【C語言】函數(shù)的概念和函數(shù)的調(diào)用(參數(shù)傳遞) 您所在的位置:網(wǎng)站首頁 屬兔進(jìn)(jìn)門玄關(guān)(guān)放什么擺件好 【C語言】函數(shù)的概念和函數(shù)的調(diào)用(參數(shù)傳遞)

          【C語言】函數(shù)的概念和函數(shù)的調(diào)用(參數(shù)傳遞)

          2024-01-31 10:04| 來源: 網(wǎng)絡(luò)整理| 查看: 265

          文章目錄

          一、函數(shù)的定義

          二、參數(shù)傳遞

          1.參數(shù)

          2.傳遞參數(shù)的方式

          3.函數(shù)調(diào)用

          一、函數(shù)的定義

          在C語言中,最基礎(chǔ)的程序模塊是函數(shù)。函數(shù)被視為程序中基本的邏輯單位,一個(gè)C程序是由一個(gè)main()函數(shù)和若干普通函數(shù)組成。

          定義一個(gè)函數(shù)的語法格式如下:

          返回值類型? ? 函數(shù)名([參數(shù)類型1? 參數(shù)名1],[參數(shù)類型2? 參數(shù)名2],[參數(shù)類型3? 參數(shù)名3]...)

          {

          ? ? 函數(shù)體

          ? ?......

          ? ? return 返回值; }

          函數(shù)主要包含:返回值類型、函數(shù)名、參數(shù)類型、參數(shù)、函數(shù)體、返回值

          各部分解析:

          返回值類型:用于限定函數(shù)返回值類型,當(dāng)返回類型為void時(shí),return語句可以省略。函數(shù)名:表示函數(shù)的名稱。參數(shù)類型:用于限定調(diào)用函數(shù)時(shí)傳入函數(shù)中的數(shù)據(jù)類型。參數(shù):用于接收傳入函數(shù)的數(shù)據(jù)return關(guān)鍵字:用于結(jié)束函數(shù),將函數(shù)的返回值返回函數(shù)調(diào)用處。

          【注意】

          ?如果函數(shù)不需要返回值,則函數(shù)的返回值類型應(yīng)被定義為void,函數(shù)的返回值就可以省略。

          [參數(shù)類型1? 參數(shù)名1],[參數(shù)類型2? 參數(shù)名2],[參數(shù)類型3? 參數(shù)名3]...稱為參數(shù)列表,如果函數(shù)不需要接收參數(shù),參數(shù)列表為空,此時(shí)函數(shù)稱為無參函數(shù)。

          二、參數(shù)傳遞 1.參數(shù)

          程序在編譯或運(yùn)行時(shí),使用某個(gè)函數(shù)來完成相關(guān)功能,稱之為函數(shù)調(diào)用。函數(shù)在被調(diào)用時(shí),可以通過函數(shù)的參數(shù)列表,進(jìn)行數(shù)據(jù)傳遞。函數(shù)中的參數(shù)有兩種,分別為形式參數(shù)和實(shí)際參數(shù)。

          (1)形式參數(shù)

          在定義函數(shù)時(shí),函數(shù)名后括號中的變量名稱為形式參數(shù)或虛擬參數(shù),簡稱“形參”。例如下面函數(shù)聲明語句:

          int func(int a,int b);

          變量a和b就是形式參數(shù),這樣的形參并不占用實(shí)際內(nèi)存,僅為了標(biāo)識函數(shù)的參數(shù)列表而存在。?

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

          在函數(shù)被調(diào)用時(shí),函數(shù)名后小括號內(nèi)的參數(shù)稱為實(shí)際參數(shù),簡稱“實(shí)參”。實(shí)參可以是常量、變量、表達(dá)式。例如以下調(diào)用語句:

          func(3,5);

          此行代碼是對函數(shù)func的調(diào)用,數(shù)據(jù)‘3’和‘5’分別對應(yīng)參數(shù)列表a和b。當(dāng)函數(shù)被調(diào)用時(shí),形參是真正的變量,占用內(nèi)存空間,此時(shí)具體的數(shù)據(jù)“3”和“5”就被傳遞給函數(shù)參數(shù)列表中的變量a和b。在函數(shù)調(diào)用時(shí),形參獲取實(shí)參的數(shù)據(jù)(相當(dāng)于進(jìn)行了賦值),該數(shù)據(jù)在本次函數(shù)調(diào)用時(shí)有效,一旦調(diào)用的函數(shù)執(zhí)行完畢,形參的值就會被釋放。

          【注意】形參和實(shí)參的數(shù)據(jù)傳遞是單向的,只能是由實(shí)參傳遞給形參,不能由形參傳遞給實(shí)參。?

          2.傳遞參數(shù)的方式

          傳遞參數(shù)的方式有:按值傳遞和按引用傳遞兩種(值傳遞和地址傳遞)

          按值傳遞實(shí)參時(shí),程序會將實(shí)參創(chuàng)建一個(gè)副本,將這個(gè)副本傳遞給被調(diào)函數(shù)。對這個(gè)副本的修改不會影響到主調(diào)函數(shù)中原來參數(shù)變量的值。按引用傳遞實(shí)參時(shí),主調(diào)函數(shù)則會允許被調(diào)函數(shù)修改相應(yīng)的實(shí)參變量的值。

          若被調(diào)函數(shù)不需要修改主調(diào)函數(shù)中實(shí)參變量的值,則應(yīng)采用按值傳遞的方式。這樣可以防止意外的副作用(變量被修改)。

          只有在被調(diào)函數(shù)需要修改主調(diào)函數(shù)中的變量而這個(gè)被調(diào)函數(shù)又是可信任的時(shí)候,才可以使用按引用傳遞。

          【注意】C語言中,所有的實(shí)參都是按值傳遞。如果被傳遞的參數(shù)是一個(gè)數(shù)組名,并且在函數(shù)中使用下標(biāo)引用該數(shù)組的參數(shù),那么在函數(shù)中對數(shù)組元素進(jìn)行修改實(shí)際上修改的是調(diào)用程序中的數(shù)組元素。函數(shù)將訪問調(diào)用程序的數(shù)組元素,數(shù)組并不會被復(fù)制。這就是按引用傳遞,也就是“傳址調(diào)用”。

          數(shù)組的這一行為看似與按值傳遞規(guī)則相悖。但其實(shí)并不矛盾——數(shù)組名實(shí)際上是一個(gè)指針,傳遞給函數(shù)的是這個(gè)指針對一個(gè)副本。下標(biāo)引用實(shí)際上是間接訪問的另一種形式,這個(gè)副本上執(zhí)行間接訪問的是原先的數(shù)組。

          案例演示:交換兩個(gè)整數(shù)

          1.值傳遞方式

          #include void swap(int a, int b) { int temp = a; a = b; b = temp; printf("交換函數(shù)結(jié)果:a=%-5d b=%-5d\n", a, b); } int main() { int a = 3, b = 4; swap(a, b); printf("主函數(shù)交換結(jié)果:a=%-5d b=%-5d\n", a, b); }

          運(yùn)行結(jié)果:

          ?

          結(jié)果分析:

          由上面運(yùn)行結(jié)果可知,調(diào)用swap函數(shù)后,只對副本a,b進(jìn)行了交換,并沒有修改實(shí)參的值。值傳遞不影響主函數(shù)中原來參數(shù)變量的值。

          2.地址傳遞方式

          #include void swap(int *a, int *b) { int temp = *a; *a = *b; *b = temp; printf("交換函數(shù)結(jié)果:a=%-5d b=%-5d\n", *a, *b); } int main() { int a = 3, b = 4; swap(&a, &b); printf("主函數(shù)交換結(jié)果:a=%-5d b=%-5d\n", a, b); }

          運(yùn)行結(jié)果:

          ?

          結(jié)果分析:

          向swap函數(shù)傳遞想要修改的變量a,b的指針,函數(shù)通過指針的間接訪問作,修改了a,b的值。

          3.函數(shù)調(diào)用

          (1)主函數(shù)調(diào)用普通函數(shù)

          (2)嵌套調(diào)用

          (3)遞歸調(diào)用:函數(shù)調(diào)用自身。

          主函數(shù)可以調(diào)用普通函數(shù),普通函數(shù)可以相互調(diào)用,但不能調(diào)用主函數(shù)。

          當(dāng)調(diào)用一個(gè)函數(shù)時(shí),需要明確函數(shù)名和實(shí)參列表。要求實(shí)參和形參必須滿足三個(gè)條件:參數(shù)個(gè)數(shù)相等、順序?qū)?yīng)、類型匹配



          【本文地址】

          公司簡介

          聯(lián)系我們

          今日新聞

          推薦新聞

          專題文章
            CopyRight 2018-2019 實(shí)驗(yàn)室設(shè)備網(wǎng) 版權(quán)所有
            黄色免费网站在线看,韩国精品在线观看,韩国美女一区二区,99国产热 布拖县| 昭苏县| 西安市| 共和县| 公安县| 都昌县| 香港 | 唐山市| 吕梁市| 子长县| 博野县| 法库县| 苏尼特左旗| 鄢陵县| 仁化县| 海宁市| 陵川县| 措美县| 固始县| 太保市| 阳新县| 滦南县| 新安县| 阿巴嘎旗| 贞丰县| 天镇县| 郁南县| 澳门| 浦北县| 隆德县| 阜南县| 白朗县| 北票市| 大连市| 东辽县| 获嘉县| 大渡口区| 临泽县| 太白县| 郸城县| 和平区| http://444 http://444 http://444 http://444 http://444 http://444