在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

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

函數(shù)

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

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

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

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

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

定義一個函數(shù)

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

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

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

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

例子

下面是一個叫做 max() 的函數(shù)的源代碼。這個函數(shù)包含 num1 和 num2 兩個參數(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ù)聲明

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

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

    return_type function_name( parameter list );

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

    int max(int num1, int num2);

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

    int max(int, int);

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

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

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

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

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

    #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)運行最終可執(zhí)行文件時,它將產(chǎn)生以下結(jié)果:

    Max value is : 200

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

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

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

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

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

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

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

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

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

    #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
上一篇:繼承下一篇:基本輸入輸出