在线二区人妖系列_国产亚洲欧美日韩在线一区_国产一级婬片视频免费看_精品少妇一区二区三区在线

鍍金池/ 教程/ C/ 函數(shù)
動(dòng)態(tài)內(nèi)存
類和對(duì)象
接口 (抽象類)
結(jié)構(gòu)體
循環(huán)的類型
函數(shù)
數(shù)字
日期和時(shí)間
基本語(yǔ)法
多態(tài)
數(shù)據(jù)抽象
注釋
命名空間
字符串
預(yù)處理器
決策語(yǔ)句
修飾符的類型
鍙橀噺綾誨瀷
基本輸入輸出
操作符
數(shù)組
模板
多線程
繼承
Web 編程
信號(hào)處理
指針
存儲(chǔ)類型
概述
引用
常量
異常處理
開發(fā)環(huán)境
重載
變量作用域
數(shù)據(jù)類型
數(shù)據(jù)封裝
文件和流

函數(shù)

函數(shù)是執(zhí)行某個(gè)任務(wù)的一組語(yǔ)句。每個(gè) C++ 程序至少具有一個(gè)功能,即 main(),所有最瑣碎的程序可以定義額外的功能。

你可以將代碼分成單獨(dú)的功能。怎樣在不同的功能之間分配你的代碼取決于你,但從邏輯上講,這個(gè)劃分通常是每個(gè)函數(shù)執(zhí)行一個(gè)特定的任務(wù)。

一個(gè)函數(shù) 聲明 用來(lái)告訴編譯器函數(shù)的名字,返回值類型,和參數(shù)。一個(gè)函數(shù)的 定義 提供了函數(shù)的實(shí)際函數(shù)體。

C++ 標(biāo)準(zhǔn)庫(kù)提供了眾多的可以被您的程序直接調(diào)用的內(nèi)置功能。例如,用 strcat() 函數(shù)來(lái)連接兩個(gè)字符串,用 memcpy() 函數(shù)可以將一個(gè)內(nèi)存位置的內(nèi)容復(fù)制到另一個(gè)內(nèi)存位置,還有更多的函數(shù)。

我們知道一個(gè)函數(shù)有著各種各樣的名字諸如一種方法或子程序或一個(gè)程序等。

定義一個(gè)函數(shù)

C++ 函數(shù)的定義的一般形式如下所示:

    return_type function_name( parameter list )
    {
       body of the function
    }

一個(gè) C++ 函數(shù)的定義由一個(gè)函數(shù)頭和一個(gè)函數(shù)體組成。以下是一個(gè)函數(shù)的所有部分:

  • 返回值類型: 一個(gè)函數(shù)可能返回一個(gè)值。 return-type 是該函數(shù)返回的值的數(shù)據(jù)類型。有些函數(shù)執(zhí)行所需的操作不返回一個(gè)值,在這種情況下,return-type 是關(guān)鍵字 void.
  • 函數(shù)名稱: 這是函數(shù)實(shí)際的名字。函數(shù)名稱和參數(shù)列表一起構(gòu)成了這個(gè)函數(shù)的簽名。
  • 參數(shù): 一個(gè)參數(shù)就像一個(gè)占位符。當(dāng)調(diào)用參數(shù)時(shí),你將把值傳遞給該參數(shù)。這個(gè)值稱為實(shí)際參數(shù)或參數(shù)。參數(shù)列表是指一個(gè)函數(shù)的類型,順序和參數(shù)的數(shù)目。參數(shù)是可選的,那就是指,一個(gè)函數(shù)可能不包含參數(shù)。
  • 函數(shù)體: 函數(shù)體包含定義函數(shù)做什么的一系列語(yǔ)句。

例子

下面是一個(gè)叫做 max() 的函數(shù)的源代碼。這個(gè)函數(shù)包含 num1 和 num2 兩個(gè)參數(shù),并返回兩者之間的最大值:

    // function returning the max between two numbers

    int max(int num1, int num2) 
    {
       // local variable declaration
       int result;

       if (num1 > num2)
      result = num1;
       else
      result = num2;

       return result; 
    }

函數(shù)聲明

一個(gè)函數(shù)聲明告訴編譯器函數(shù)的名字和如何調(diào)用這個(gè)函數(shù)。函數(shù)的實(shí)際實(shí)體可以被單獨(dú)定義。

函數(shù)聲明有以下幾個(gè)部分:

    return_type function_name( parameter list );

對(duì)于上述定義的 max() 函數(shù),以下是這個(gè)函數(shù)的聲明:

    int max(int num1, int num2);

參數(shù)的名稱在函數(shù)聲明中并不重要,但是參數(shù)的類型是必須有的,所以以下也是有效的聲明:

    int max(int, int);

當(dāng)你在一個(gè)源文件中定義了一個(gè)函數(shù)并且在另一個(gè)文件中調(diào)用了該函數(shù)時(shí),函數(shù)的聲明是必需的。在這種情況下,你應(yīng)該在調(diào)用該函數(shù)的文件的頂部聲明這個(gè)函數(shù)。

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

當(dāng)你創(chuàng)建一個(gè) C++ 函數(shù)時(shí),你給出這個(gè)函數(shù)應(yīng)該做什么的一個(gè)定義。若要使用一個(gè)函數(shù),你將需要調(diào)用或喚起這個(gè)函數(shù)。

當(dāng)一個(gè)程序調(diào)用一個(gè)函數(shù)時(shí),程序控制轉(zhuǎn)到所調(diào)用的函數(shù)。被調(diào)用的函數(shù)執(zhí)行定義的任務(wù),當(dāng)執(zhí)行到返回語(yǔ)句或函數(shù)執(zhí)行到該函數(shù)結(jié)尾的右大括號(hào)時(shí),它將程序控制返回給主程序。

要調(diào)用一個(gè)函數(shù),你只需要傳遞所需的參數(shù)以及函數(shù)名,如果函數(shù)返回一個(gè)值,然后你可以存儲(chǔ)返回的值。舉個(gè)例子:

    #include <iostream>
    using namespace std;

    // function declaration
    int max(int num1, int num2);

    int main ()
    {
       // local variable declaration:
       int a = 100;
       int b = 200;
       int ret;

       // calling a function to get max value.
       ret = max(a, b);

       cout << "Max value is : " << ret << endl;

       return 0;
    }

    // function returning the max between two numbers
    int max(int num1, int num2) 
    {
       // local variable declaration
       int result;

       if (num1 > num2)
      result = num1;
       else
      result = num2;

       return result; 
    }

我將 max() 函數(shù)跟在 main() 函數(shù)后面然后編譯源代碼。當(dāng)運(yùn)行最終可執(zhí)行文件時(shí),它將產(chǎn)生以下結(jié)果:

    Max value is : 200

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

如果一個(gè)函數(shù)要使用參數(shù),它必須聲明接受參數(shù)值的變量。這些變量被稱為函數(shù)的形參

像其他本地變量一樣,這些形參在函數(shù)中,在進(jìn)入函數(shù)時(shí)創(chuàng)建,在退出函數(shù)時(shí)銷毀。

當(dāng)調(diào)用函數(shù)時(shí),這里有兩種方式可以將參數(shù)傳遞給函數(shù)。

調(diào)用類型 描述
通過(guò)值調(diào)用 這個(gè)方法將參數(shù)的實(shí)際值復(fù)制到該函數(shù)的形參。在這種情況下,在函數(shù)中對(duì)該參數(shù)做出的更改對(duì)這個(gè)參數(shù)沒(méi)有影響。
通過(guò)指針調(diào)用 這個(gè)方法將參數(shù)的地址復(fù)制到形參中。在函數(shù)的內(nèi)部,這個(gè)地址用來(lái)在調(diào)用中訪問(wèn)這個(gè)實(shí)參。這意味著,對(duì)參數(shù)所做出的更改會(huì)影響參數(shù)。
通過(guò)引用調(diào)用 這個(gè)方法將參數(shù)的引用復(fù)制到形參中。在函數(shù)的內(nèi)部,這個(gè)引用用來(lái)在調(diào)用中訪問(wèn)這個(gè)形參。這意味著,對(duì)參數(shù)所作出的更改會(huì)影響參數(shù)。

默認(rèn)情況下, C++ 使用通過(guò)值調(diào)用來(lái)傳遞參數(shù)。一般情況下,這意味著,在函數(shù)內(nèi)部的代碼不能改變用來(lái)調(diào)用函數(shù)的參數(shù)的值,在上面提到的例子中,當(dāng)調(diào)用 max() 函數(shù)時(shí)使用了。

參數(shù)的默認(rèn)值

當(dāng)你定義一個(gè)函數(shù)時(shí),你可以為每個(gè)最后的參數(shù)指定一個(gè)默認(rèn)值。當(dāng)調(diào)用函數(shù)時(shí),如果對(duì) 應(yīng)的參數(shù)為空時(shí),將使用此值。

這是在函數(shù)定義中通過(guò)使用賦值運(yùn)算符和在函數(shù)定義中進(jìn)行參數(shù)賦值完成的。如果當(dāng)調(diào)用 該函數(shù)時(shí),該參數(shù)的值沒(méi)有被傳遞,則使用默認(rèn)給定的值,但如果指定了一個(gè)值,這個(gè)默 認(rèn)值被忽略,而使用傳遞的值。請(qǐng)考慮下面的示例:

    #include <iostream>
    using namespace std;

    int sum(int a, int b=20)
    {
      int result;

      result = a + b;

      return (result);
    }

    int main ()
    {
       // local variable declaration:
       int a = 100;
       int b = 200;
       int result;

       // calling a function to add the values.
       result = sum(a, b);
       cout << "Total value is :" << result << endl;

       // calling a function again as follows.
       result = sum(a);
       cout << "Total value is :" << result << endl;

       return 0;
    }

當(dāng)上面的代碼被編譯和執(zhí)行后,它將產(chǎn)生以下結(jié)果:

    Total value is :300
    Total value is :120
上一篇:繼承下一篇:基本輸入輸出