---
# System prepended metadata

title: 【C++ 筆記】簡介 / 環境安裝 / 基本語法 - part 1
tags: [C++, 程式語言]

---

【C++ 筆記】簡介 / 環境安裝 / 基本語法 - part 1
===

目錄（Table of Contents）：

[TOC]

---

很感謝你點進來這篇文章。

你好，我並不是什麼 C++、程式語言的專家，所以本文若有些錯誤麻煩請各位鞭大力一點，我極需各位的指正及指導！！本系列文章的性質主要以詼諧的口吻，輕鬆的自學程式語言，如果你喜歡，麻煩留言說聲文章讚讚吧！

簡介（Introduction）
---

> C++ 是一種高階語言，它是由 Bjarne Stroustrup（比雅尼·史特勞斯特魯普
> ）於 1979 年在貝爾實驗室開始設計和開發的。C++ 進一步擴充並完善了 C 語言，是一種物件導向的程式設計語言。C++ 可運作於多種平台上，如 Windows、MAC 作業系統以及 UNIX 的各種版本。

而 Bjarne Stroustrup 又被稱為是 C++ 之父。

以上是 C++ 的簡短介紹，接著讓我們進入環境安裝的部分。

環境安裝（Environment）
---

**Visual Studio**：目前普遍認為在 C++ 編寫上最方便的編輯器軟體。

另外推薦：**Dev-C++**、**Code::Blocks** 兩大軟體，其中最推薦使用的是 Code::Blocks，因為除了是 APCS 指定軟體以外，也是接下來由筆者制定講義之一系列當中最常使用的軟體。

雖說 Visual Studio 算是蠻多開發者們所使用的軟體之一，但是因為這個軟體對於 CPU、記憶體的耗損會有很大的影響，在教學上並不方便使用。

那另外也有線上編譯器可供我們使用，像是這個網站：https://www.onlinegdb.com/online_c++_compiler

線上編譯器的好處是可以不用開啟軟體就直接寫程式，但缺點是並不適合拿來開發，如果你只是想要學學 C++ 而已也就還好。

那接下來讓我們繼續環境安裝的部分：

### Code::Blocks
---

![image](https://hackmd.io/_uploads/SJr0DlkEA.png)

首先我們先到這個網站：https://www.codeblocks.org/downloads/binaries/

在這邊就依據你個人的作業系統來進行下載安裝，像我個人的作業系統就是使用 windows 11，那麼就直接到下面的 windows 介面來。

![image](https://hackmd.io/_uploads/BkWPFxyN0.png)

那 windows 當然也有分 32 bit、64 bit，不過現今的電腦硬體主流大多都是 64 bit 而非 32 bit，如果要下載的話，那麼正常來說點紅圈圈起來的地方即可。

![image](https://hackmd.io/_uploads/S1doKxJVC.png)

當我們點進來以後，那麼 SOURCEFORGE 這個網站就會自動幫我們移轉到下載的地方，大約等待五秒即可開始下載。

下載好，打開後會像下面這張圖所示：

![image](https://hackmd.io/_uploads/SJkgcxkER.png)

直接點下一步：

![image](https://hackmd.io/_uploads/HJ7M9lkVR.png)

再點 I Agree：

![image](https://hackmd.io/_uploads/rJD7cgyVR.png)

這邊設定不用管他，直接下一步。

![image](https://hackmd.io/_uploads/S1wEqxJNA.png)

如果你對路徑有異議的話，當然可以更改一下，不過本人建議維持原路徑還是好一點，總之下一步（install）。

![image](https://hackmd.io/_uploads/SyFY9gJER.png)

然後接下來就直接進入到安裝過程了。

![codeblocks6](https://hackmd.io/_uploads/SyF7sgJ4R.png)

之後因為我這個軟體早就安裝好了，所以打開後沒跳出這個畫面，稍微借用一下別人的圖XD

上面這張圖我們點一下那個黑字，然後點右邊的 Set as default 即可。

![codeblocks7](https://hackmd.io/_uploads/SJ2PseJVR.png)

點 OK 之後會跳出如上圖，同樣照著圖片的點即可，這個意思是說要不要將所有 C/C++ 的檔案與 Code::Blocks 連結，也就是如果有個檔名叫做 abc.cpp （.cpp 為 C++ 副檔名），你雙擊點開以後也會順帶幫你打開 Code::Blocks 進去編輯。

![image](https://hackmd.io/_uploads/HJdAse1VC.png)

打開以後呢，你會發現，欸？怎麼都是英文？我英文文盲啊！

從古至今有句話是這麼說的：~~學程式之前，英文先學好啊！~~ 一 胡適

~~胡適：我沒說過。~~

![image](https://hackmd.io/_uploads/BkHchgJVC.png)

不鬧了，反正如果我們要新增一個空白檔案的話，那麼請來到軟體的左上角 [file] -> [Empty file] 打開一個空檔案。

![image](https://hackmd.io/_uploads/S1hpnxk40.png)

然後就有一個檔案叫做 Untitled1，也是我們熟悉的"未命名"檔案。

此時我們按下 ctrl + S 快捷鍵（表示儲存檔案），會跳出檔案總管跟你說：「哈囉，請問你的文件要放在哪裡呢？」

![image](https://hackmd.io/_uploads/SJvHTeJER.png)

人性是懶惰的，我相信你一定會直接按下右下角的「存檔（S）」，然後接下來就是一大堆的 Untitled12345678.c！！

阿各位讀者，修但幾勒，在這邊有個重點要提醒您：副檔名記得將 .c 改成 .cpp 唷！這樣才是 C++ 的格式，不然到時候跑 C++ 就 GG 了。

存好檔以後，也讓我們進入到下一個章節了：

C++ 基本語法
---

首先來介紹 C++ 的基本架構：

![image](https://hackmd.io/_uploads/SJeLRg14A.png)

在這之前，你可能會疑惑，為什麼你的字體那麼大？我的字體好小啊，眼睛快脫窗了！！

沒關係，請你按住你的 ctrl 鍵不要放，然後將你的滑鼠滾輪向上滑，就能達到跟我一樣的效果了。

如果我們要執行程式碼的話，可以直接按下你鍵盤上的 F9 按鈕，直接編譯執行程式碼。或是你懶得按，只想動滑鼠就請看下圖：

![image](https://hackmd.io/_uploads/SJ1ZWvkVR.png)

不過值得注意的是，這個 F9 按鈕你按一次就行了，前提是你沒有改動程式碼的話，還是按下普通的綠色三角形按鈕即可，快捷鍵是 ctrl+F10。（以上快捷鍵僅限 Code::Blocks 軟體）

好的，首先讓我們一行一行慢慢介紹：

1. ***第一行：引入標頭檔。***

標頭檔的副檔名叫做 .h，那第一行完整的標頭檔就叫做 iostream.h，不過第一行它卻不是寫 #include <iostream.h> 的，為什麼？（有關於這部分有興趣自己查看看吧 :)）另外這個標頭檔的作用是管理「輸出」、「輸入」的，i = input、o = output、stream = 串流。

總之標頭檔你就把它想像成是 C++ 當中能夠發揮功能的零件吧！

2. ***第二行：using namespace std; 告訴編譯器使用 std 命名空間。***

好的，在說明這個之前，我先請各位看看沒有使用命名空間的寫法：

![image](https://hackmd.io/_uploads/rk4mzW1ER.png)

有看出差別了嗎？前一個圖跟上圖比較，上圖刪除了命名空間的指令，並在 cout 前面加上了 std::。

這個 std 即為 C++ 當中的標準函式庫（Standard Library），那函式庫這個東西就裝了非常多的標頭檔在裡面，所以函式庫就像是一個圖書館，裡面裝了很多書（標頭檔）在裡面。

那為什麼需要命名空間這個東西呢？其實很簡單，就一句話而已：太麻煩啦！

不過你想想，每次打指令前都要打上 std:: 是不是挺煩的？而我們在第二行直接宣告命名空間，告訴編譯器說我們要使用 std 命名空間，就能夠直接省略這個步驟。

而命名空間比較正式的說法是這樣：

> 命名空間的作用是可以區分不同函式庫中相同名稱的函式。

3. ***第四行：int main() 為程式一開始執行的地方。***

int main() {} 這個東西是一個函式，至於函式是什麼各位目前還不太需要了解，只需知道他是「主」函式，為 C++ 程式碼執行程式碼的中心。

4. ***第五行：cout << "Hello World"; 表示在終端上輸出***

cout，先念 c、再念 out，這個就是表示在終端（就是那個命令提示字元的視窗）上進行輸出的動作。輸出就是把文字顯示在終端上。

執行後圖如下：

![image](https://hackmd.io/_uploads/HkVlzPJ4R.png)

而在這邊我想要提醒各位一個非常重要的地方是：

***C / C++ 每一條語句的最後面請加上分號！！***
***C / C++ 每一條語句的最後面請加上分號！！***
***C / C++ 每一條語句的最後面請加上分號！！***

因為很重要所以說三次，但是例外就是像引入標頭檔、函式這類的不用特別加上分號。

啊？你說為什麼要加上分號，沒辦法，這個就是 C / C++ 的規定，代表一個語句的結束。

5. ***第五行：return 0; 表示程式到此結束***

return 0;（C++ 98 標準開始可以不用加，也就是現在你可加可不加，因為編譯器在編譯執行時會自動幫你加上去） 表示讓 int main(){} 主程式函式結束，並且回傳 0 這個值，執行後結果請看下圖：

![image](https://hackmd.io/_uploads/HJf1EDyVC.png)

阿如果我們將 return 0; 改成 return 1; 呢？

![image](https://hackmd.io/_uploads/B1wZNvJNA.png)

看起來……沒什麼變化對吧？是的沒錯～但有時候這種 return 0;、return 1; 常常會用來表示程式碼執行正確或是錯誤的訊息讓我們知道，0 表示完全沒問題，1 就是有問題。但你要注意的是 1 並不是絕對的數值。

### C++ 的一些小細節
---

cout 時因為是輸出，所以後面要使用 <<，因為要將資料"插入"標準輸"出"流。

cin 時因為是輸入，所以後面要使用 >>，因為要將資料"提取"自標準輸"入"流。

cin 的小小例子：

```cpp=
#include <iostream>
using namespace std;

int main()
{
   int x;
   cin >> x;
   cout << "The Number is : " << x;
   return 1;
}
```

註：int x; 為一個變數。

輸出結果如下圖：

![image](https://hackmd.io/_uploads/ryMBqvkNA.png)

### 註解（註釋：Comment）
---

C++ 跟 C 的註解是一樣的：

* // - 單行註解
* /* ... */ - 多行註解

總結（Conclusion）
---

C++ 基本架構：

```cpp=
#include <iostream>
using namespace std;
int main(){
    cout << "Hello World";
    return 0;
}
```

#include <> 表示引入標頭檔
    
using namespace std; 表示使用命名空間 std（iosteam.h 放在 std 標準函式庫裡面，使用命名空間主要是為了節省麻煩）

int main(){} 為 C++ 當中的主要程式執行處

cout << 作為輸出，輸出於終端上。 <-> cin >> 作為輸入，從終端輸入資料。

return 0; 表示一個函式結束。（C++ 98 標準開始可以不用加，也就是現在你可加可不加，因為編譯器在編譯執行時會自動幫你加上去）

return 0;、return 1; 這樣的設計可以讓程式設計師知道程式碼錯誤還是沒錯，沒錯就是 0、有就是 1，1 值並不是絕對的。

***記得，每個語句都必須加上分號！！***
***記得，每個語句都必須加上分號！！***
***記得，每個語句都必須加上分號！！***

參考資料
---

[C++基礎語法介紹 - HackMD](https://hackmd.io/@Scott-Chou/rkbl5dzCO)

[IT Lab艾鍗學院技術Blog: [C/C++程式] Code::Blocks 整合開發環境的安裝與使用](https://blog.ittraining.com.tw/2018/01/dev-c-codeblocks.html)

[C++ 基本语法 | 菜鸟教程](https://www.runoob.com/cplusplus/cpp-basic-syntax.html)

[C++ 的命名空間 | 就是愛程式](https://atedev.wordpress.com/2007/01/01/c-%E7%9A%84%E5%91%BD%E5%90%8D%E7%A9%BA%E9%96%93/)

[C++標準函式庫 - 維基百科，自由的百科全書](https://zh.wikipedia.org/zh-tw/C%2B%2B%E6%A8%99%E6%BA%96%E5%87%BD%E5%BC%8F%E5%BA%AB)

[What does "<<" and ">>" mean in C++ for cout/cin? - Stack Overflow](https://stackoverflow.com/questions/7757278/what-does-and-mean-in-c-for-cout-cin)