← SEARCHABLE ARCHIVE
C / C++ · 2026-05-10

C++ 從基礎到精通 — 第 4 講

什麼是函數?第2集

INTERACTIVE READING MODE →

該部落格上撰寫的文章是出於教學目的而創建的。 另外,文章中的資訊可能不正確,請謹慎。

在這篇文章中,我們將詳細了解如何使用基本功能。

#include <iostream>

void function1(){
    std::cout << "function1!" << std::endl;
}

int main(){
    function1();
    function2();
    return 0;
}

void function2(){
    std::cout << "function2!" << std::endl;
}

該程式碼無法編譯。 它可能會因編譯器而異,但是 main.cpp:9:5: error: ‘function2’ was not declared in this scope; 您可以看到出現錯誤。

在我們眼裡function2已經聲明了,為什麼計算機不知道? C語言和大多數程式語言都是從頂部讀取程式碼。 換句話說,程式碼將這些命令傳送給電腦。

讀取 function1 的聲明並在記憶體中建立 function1。 執行main函數,執行function1和function2。 讀取 function2 的聲明並在記憶體中建立 function2。 (稍後我們將了解名稱查找失敗。)

即使是人類讀起來也不覺得奇怪嗎?

嘗試在聲明 function2 之前在 main 中執行它會導致編譯錯誤。

#include <iostream>

void function1(){
    std::cout << "function1!" << std::endl;
}

void function2(){
    std::cout << "function2!" << std::endl;
}

int main(){
    function1();
    function2();
    return 0;
}

因此,預計該程式碼不會導致錯誤。

或者,在主函數上方寫一個聲明,提前告訴編譯器該函數的類型, 包含實際操作的實作可以寫在main函數下。

#include <iostream>

void function1();
void function2();

int main(){
    function1();
    function2();
    return 0;
}

void function1(){
    std::cout << "function1!" << std::endl;
}

void function2(){
    std::cout << "function2!" << std::endl;
}