C++ 簡介/函式 已棄用
外觀
< C++ 簡介
一旦你開始認真程式設計,你可能會發現自己一遍又一遍地寫著相同(或非常相似)的程式碼行。例如,假設你一直需要從程式的使用者那裡收集 4 個數字,並顯示這些數字的總和和乘積。(注意:這不是一個具有代表性的例子。它只是一個例子,旨在簡單到足以讓初學者理解)。這樣做一兩次很容易,用這樣的程式碼
int a, b, c, d;
a = b = c = d = 0;
cin >> a >> b >> c >> d;
cout << "Sum: " << (a + b + c + d) << endl;
cout << "Product: " << (a * b * c * d) << endl;
然而,每次你想要這樣做時都輸入所有這些命令是一個糟糕的想法。對於這麼小的命令序列,你可能認為唯一潛在的問題可能是你的手因為輸入太多而疲憊。這確實是問題,但它可以透過將程式碼從一個檔案複製貼上到另一個檔案來解決,而不是直接輸入它。然而,對於更大的命令序列,尤其是複雜的命令序列,即使這種策略也會導致問題
- 修改:如果程式的要求發生了變化,影響到命令序列使用的所有地方,你可能會忘記在一個或兩個地方更新它。或者你可能記得在所有地方更新它,但當你這樣做的時候,會給程式引入潛在的致命錯誤。
- 膨脹:程式的原始碼變得比你或任何其他閱讀程式碼的人想要的要長得多。
- 實現某些功能的困難:某些演算法(執行任務的指令的有序列表)非常難以使用順序程式碼行來實現,即使它們不一定是複雜的任務。
幸運的是,在 C++(以及幾乎所有其他值得注意的程式語言)中有一種方法可以定義可以在程式的任何地方執行的命令序列。這被稱為定義函式。
例如,我們可以定義一個函式,該函式將打印出上面顯示的總和和乘積。
void sumAndProd(void)
{
int a, b, c, d;
a = b = c = d = 0;
cin >> a >> b >> c >> d;
cout << "Sum: " << (a + b + c + d) << endl;
cout << "Product: " << (a * b * c * d) << endl;
}
一旦定義了這個函式,你就可以透過鍵入它的名稱,然後是 "()" 來執行(或呼叫)它。
sumAndProd();
(終止語句的分號不是函式呼叫的部分。)
現在,你可以將上面的程式碼複製到任何可能需要其功能的檔案中。然後,你可以使用上面的語法呼叫該函式,只要你想就可以。這是一個包含此函式的完整程式
#include <iostream>
using namespace std;
void sumAndProd(void)
{
int a, b, c, d;
a = b = c = d = 0;
cin >> a >> b >> c >> d;
cout << "Sum: " << (a + b + c + d) << endl;
cout << "Product: " << (a * b * c * d) << endl;
}
請注意,你必須將 sumAndProd 的定義放在它首次使用的地方之前。否則,你的編譯器可能會抱怨“對未宣告識別符號的引用”之類的問題。然而,有一種替代方法可以告訴你的程式一個函式存在,而無需立即定義它;這項技術將在下面更詳細地解釋。