發新話題

C++ Gossip - 《函式入門》函式簡介

C++ Gossip - 《函式入門》函式簡介

到目前為止都只使用一個函式(Function),也就是main()主函式,將所有的程式寫在主函式中只適合一些小程式,如果您的程式比較大,您會發現到有某些程式碼會經常使用,而由於撰寫在同一個主函式中的關係,這些程式碼會一再被重覆的撰寫,對於程式中出現兩次以上被重覆使用的程式片段,您可以將之定義為函式以便重覆呼叫。

函式用來將程式組織為一個小的、獨立的運行單元,一個函式可以接受資料,並運行其中的算法,最後將結果傳回。

在C++中函式的組成主要包括四個部份:返回值、函式名稱、參數列與函式主體。前三者被稱為函式宣告或函式原型(Function prototype),在C++中規定函式被呼叫之前,必須先作宣告的動作,否則會出現編譯錯誤,函式原型描述的是函式的介面,通常宣告在一個獨立的表頭檔中,而被含入每一個想要呼叫函式的檔案中,以下是一個函式宣告的範例:

  • math.h
int pow2(int);
int pow(int, int);
在C++中如果呼叫函式不傳回任何值,則宣告為void,若不傳入任何引數,則參數列保持空白即可,雖然您也可以使用void來加以註明,不過這是多此一舉,事實上,使用void註明參數列不使用其實是C的風格,而在C++中,參數列的空白即表示這個函式不接受任何參數。表頭檔案被儲存為.h檔案,接著您可以根據函式原型來實作函式主體,例如:
  • math.cpp
#include "math.h"

int pow2(int num) {
    return num*num;
}

int pow(int n, int p) {
    int r = 1;

    for(int i = 0; i < p; i++)
        r *= n;
        
    return r;
}
在含入表頭檔案時,如果表頭檔案與含入表頭檔的文件在同一個目錄下,那麼就使用雙引號""來包括表頭檔案名稱,如果是標準或專案專屬的表頭檔,例如C++ 的標準表頭檔,那麼則使用角括號<>來括住,編譯器在尋找時就會從所設定的目錄中開始尋找。

接著您可以在含入表頭檔後,直接呼叫所定義的函式,例如:

  • main.cpp
#include <iostream>
#include "math.h"
using namespace std;

int main() {
    int num = 0;
    int power = 0;

    cout << "輸入數值:";
    cin >> num;

    cout << "輸入平方:";
    cin >> power;

    cout << num << " 平方:"
         << pow2(num) << endl;
    cout << num << " 的" << power << "次方:"
         << pow(num, power)
         << endl;

    return 0;
}
執行結果:
輸入數值:10
輸入平方:3
0 平方:100
0 的3次方:1000

在編譯時期,編譯器會對被呼叫函式作檢查,如果無法根據函式名稱、提供的引數型態與函式宣告上參數型態來決定被呼叫的函式,則會出現編譯錯誤,這就是必須先作函式宣告的原因,這對編譯器的檢查工作是必要的資料。

TOP

發新話題

本站所有圖文均屬網友發表,僅代表作者的觀點與本站無關,如有侵權請通知版主會盡快刪除。