2023年3月31日 星期五

C & C++ 學習筆記 : Hello World

二哥這學期選的嵌入式系統要用到 C++ 語言, 最近問我類別的問題, 但我只學過 C 語言, 沒接觸過 C++, 所以就跟市圖借了洪維恩的書給他自己看. 這幾天我拿來翻閱, 覺得有 C 的基礎來學 C++ 似乎不難 (但十幾年前就是因為覺得 C++ 太複雜才改學 Java 的 XD), 這兩天有空就看一看隨手測試一下, 順便寫一下筆記. 

參考書籍 : 

# C++ 教學手冊 (第三版) (旗標 2012)

關於 C++ 的背景知識摘要如下 :
  • C++ 是 Bjarne Stroustrup 於 1980 年開始以 C 為基礎發展的物件導向語言, 目前最新版本為 C++ 20. 
  • C++ 衍生自 C 語言, 它包含 C 語言所有的功能, 所有 C 程式只要做些許修改甚至完全不用修改即可在 C++ 編譯器中順利執行.
  • C++ 的迴圈與分支等基本語法跟 C 語言中完全相同. 
  • C++ 與 C 最大的差異是 C++ 為物件導向語言, 具有類別的封裝, 多型, 與繼承等功能, 這是 C 語言所沒有的. 其次, C++ 新增了布林型態 bool, 這也是 C 語言沒有的. 隨著版本不斷演進, C++ 發展出泛型等更多功能與語法. 
  • 結構 (struct) 在 C++ 中並不常用, 因為此功能在 C++ 中大多以類別取代.
參考 :


下面是最簡單的 C++ 程式範例 : 

//hello_world.cpp
#include <iostream>
using namespace std;
int main() {
    cout << "Hello, world!" << endl;
    return 0;
}

此例中首先用前置指令 include 將 C++ 內建輸出入串流函式庫 iostream 含括進來, 然後用 using 指令設定名稱空間為 std, 在 C++ 規範中, 標準函式庫中的函數, 類別與物件都是定義在 std 這個名稱空間中, 設定名稱空間可以讓我們在使用 C++ 標準函式庫裡面的內建函數與類別時, 不需要指定所屬名稱空間, 例如上例若不使用 using 去設定名稱空間, 則程式中用到標準輸出 cout 與跳行 endl 這兩個標準函式庫的物件時, 前面需用 std:: 指明其所屬名稱空間 :

//hello_world.cpp
#include <iostream>
int main() {
    std::cout << "Hello, world!" << std::endl;
    return 0;

程式執行入口 main() 函式裡面只有兩行指令, 一是將 "Hello, world!" 與換行符號 endl  (注意最後字元是 L 的小寫, 不是 123 的 1, 為行尾符號 end of line 之意) 先後用管線 << 傳送到標準輸出 cout, 然後用 return 傳回 0 表示程式正常結束 (傳回 1 為異常結束). 

將此程式輸入到最常用的 C++ 編輯器 Dev-cpp 中存檔為 hello_world.cpp 後編譯執行, 就會在主控台顯示 'Hello, world!' :




上面的程式如果用 C 來寫是這樣 :

//hello_world.c
#include <stdio.h>
int main() {
    printf("Hello, world!\n");
    return 0;

結果如下 : 




Dev-cpp 編譯器可在 SourceForge 下載 :


也可以用 replit.com 的免費線上編譯器, 不須下載或安裝即可執行 :





另外還有一個不錯的免註冊直用的線上 C/C++ 編譯器 : 



2023-11-23 補充 :

今天在上 Hahow 企業版的 C 語言課程時, 發現老師使用 Tutorialpoint 的線上編譯器, 介面比 OnlinGDB 的乾淨漂亮 :


沒有留言 :