S SmartDocs

编程语言

Python、C、C++、Java、JavaScript、TypeScript、Go、R 与 Haskell 教程,从入门语法到高级技巧。

C Programming Language 更新于 2026-08-02

練習題與詳解 — 單元 07:陣列(Arrays)

本檔提供本單元練習題的完整詳解。先自己動手做:每題先只看「題目」, 寫完、編譯、執行後再對照「解題思路」與「參考解答」。 完整程式碼都在 exercises/ 資料夾,可直接編譯:

阅读文章 →
C Programming Language 更新于 2026-08-01

單元 07:陣列(Arrays)

重點:: 陣列長度必須是編譯期已知的常數(C89 規則;C99 的 VLA 本教程先不使用)。 部分初始化時,剩餘元素保證補 0——這是 { 0 } 全清技巧的原理。 沒有初始化的區域陣列內容是垃圾值,跟普通變數一樣。

阅读文章 →
C Programming Language 更新于 2026-08-02

練習題與詳解 — 單元 08:字元與字串基礎(Characters & Strings Basics)

本檔提供本單元練習題的完整詳解。先自己動手做:每題先只看「題目」, 寫完、編譯、執行後再對照「解題思路」與「參考解答」。 完整程式碼都在 exercises/ 資料夾,可直接編譯:

阅读文章 →
C Programming Language 更新于 2026-08-01

單元 08:字元與字串基礎(Characters & Strings Basics)

char 存的是字元的編碼值。ASCII 是最通行的編碼:

阅读文章 →
C Programming Language 更新于 2026-08-02

練習題與詳解 — 單元 09:基本輸入輸出(Basic I/O)

本檔提供本單元練習題的完整詳解。先自己動手做:每題先只看「題目」, 寫完、編譯、執行後再對照「解題思路」與「參考解答」。 完整程式碼都在 exercises/ 資料夾,可直接編譯:

阅读文章 →
C Programming Language 更新于 2026-08-02

單元 09:基本輸入輸出(Basic I/O)

長度修飾:%ld(long)、%lld(long long)、%zu(size_t)、%hd(short)。

阅读文章 →
C Programming Language 更新于 2026-08-02

練習題與詳解 — 01 指標基礎(Pointers Basics)

本檔收錄本單元的練習題、完整解題思路與參考解答。 強烈建議先自己動手做:看完題目就闔上這份檔案,寫出你的版本、編譯、執行、卡住了再回來看「解題思路」; 真的做完了,再對照「參考解答」與「程式碼講解」。每題的完整程式碼也放在 exercises/ 資料夾,可直接編譯:

阅读文章 →
C Programming Language 更新于 2026-08-09

01 指標基礎(Pointers Basics)

指標(pointer)是 C 語言最核心、也最容易讓初學者卻步的主題。 它的本質其實很單純:指標就是一個「存放記憶體位址」的變數。 掌握指標之後,你才能真正理解陣列、字串、動態記憶體與函式間的資料傳遞。

阅读文章 →
C Programming Language 更新于 2026-08-02

練習題與詳解 — 02 指標與陣列(Pointers and Arrays)

本檔收錄本單元的練習題、完整解題思路與參考解答。 強烈建議先自己動手做:看完題目就闔上這份檔案,寫出你的版本、編譯、執行、卡住了再回來看「解題思路」; 真的做完了,再對照「參考解答」與「程式碼講解」。每題的完整程式碼也放在 exercises/ 資料夾,可直接編譯:

阅读文章 →
C Programming Language 更新于 2026-08-01

02 指標與陣列(Pointers and Arrays)

在 C 語言中,指標與陣列的關係密不可分:任何用陣列下標能寫的程式,都能用指標改寫。 K&R 甚至說,指標版本通常更快(在現代編譯器下兩者多半等價,但理解這層關係仍是讀懂 C 程式的關鍵)。

阅读文章 →
C Programming Language 更新于 2026-08-02

練習題與詳解 — 03 多維陣列與指標陣列(Multi-dimensional Arrays & Arrays of Pointers)

本檔收錄本單元的練習題、完整解題思路與參考解答。 強烈建議先自己動手做:看完題目就闔上這份檔案,寫出你的版本、編譯、執行、卡住了再回來看「解題思路」; 真的做完了,再對照「參考解答」與「程式碼講解」。每題的完整程式碼也放在 exercises/ 資料夾,可直接編譯:

阅读文章 →
C Programming Language 更新于 2026-08-01

03 多維陣列與指標陣列(Multi-dimensional Arrays & Arrays of Pointers)

二維陣列和「指標陣列」長得很像(都能寫 x[i][j]),底層卻是完全不同的兩種結構。 本單元釐清它們的記憶體佈局、傳入函式的正確寫法,並重現 K&R 的月份名稱經典範例。

阅读文章 →
C Programming Language 更新于 2026-08-02

練習題與詳解 — 04 進階字串處理(Strings Advanced)

本檔收錄本單元的練習題、完整解題思路與參考解答。 強烈建議先自己動手做:看完題目就闔上這份檔案,寫出你的版本、編譯、執行、卡住了再回來看「解題思路」; 真的做完了,再對照「參考解答」與「程式碼講解」。每題的完整程式碼也放在 exercises/ 資料夾,可直接編譯:

阅读文章 →
C Programming Language 更新于 2026-08-01

04 進階字串處理(Strings Advanced)

C 沒有內建字串型別——字串只是「以 '\0' 結尾的字元陣列」。 標準函式庫 <string.h> 與 <ctype.h> 提供了操作字串的工具箱, 但也埋著緩衝區溢位等安全地雷。本單元完整導覽這些函式,並自己動手實作幾個經典函式。

阅读文章 →
C Programming Language 更新于 2026-08-02

練習題與詳解 — 05 結構(Structures)

本檔收錄本單元的練習題、完整解題思路與參考解答。 強烈建議先自己動手做:看完題目就闔上這份檔案,寫出你的版本、編譯、執行、卡住了再回來看「解題思路」; 真的做完了,再對照「參考解答」與「程式碼講解」。每題的完整程式碼也放在 exercises/ 資料夾,可直接編譯:

阅读文章 →
C Programming Language 更新于 2026-08-01

05 結構(Structures)

結構(struct)讓你把「相關的資料」打包成一個單位——例如一個點的 x、y 座標, 一個員工的姓名、編號與薪水。結構是 C 建構資料抽象的基石, 之後的鏈結串列、樹、以及幾乎所有真實世界的 C 程式都建立在它之上。

阅读文章 →
C Programming Language 更新于 2026-08-02

練習題與詳解 — 06 typedef、enum、union 與位元欄位

本檔收錄本單元的練習題、完整解題思路與參考解答。 強烈建議先自己動手做:看完題目就闔上這份檔案,寫出你的版本、編譯、執行、卡住了再回來看「解題思路」; 真的做完了,再對照「參考解答」與「程式碼講解」。每題的完整程式碼也放在 exercises/ 資料夾,可直接編譯:

阅读文章 →
C Programming Language 更新于 2026-08-01

06 typedef、enum、union 與位元欄位

本單元收齊 C 型別系統的幾件「特殊武器」: typedef 幫型別取別名、enum 定義一組具名常數、 union 讓多個成員共用同一塊記憶體、位元欄位(bit-field)以位元為單位切割儲存空間。 最後介紹把 enum 與 union 結合的 tagged union 模式——C 語言表達「多型資料」的標準手法。

阅读文章 →
C Programming Language 更新于 2026-08-02

練習題與詳解 — 07 動態記憶體管理(Dynamic Memory)

本檔收錄本單元的練習題、完整解題思路與參考解答。 強烈建議先自己動手做:看完題目就闔上這份檔案,寫出你的版本、編譯、執行、卡住了再回來看「解題思路」; 真的做完了,再對照「參考解答」與「程式碼講解」。每題的完整程式碼也放在 exercises/ 資料夾,可直接編譯:

阅读文章 →
C Programming Language 更新于 2026-08-01

07 動態記憶體管理(Dynamic Memory)

到目前為止,所有變數的大小都在編譯期決定。但真實程式常常要到執行期才知道需要多少空間 ——使用者會輸入幾筆資料?檔案有多大?這就需要動態記憶體:向系統的堆積(heap)要空間, 用完再親手還回去。「親手」二字正是 C 的力量與危險所在。

阅读文章 →
C Programming Language 更新于 2026-08-02

練習題與詳解 — 08 遞迴(Recursion)

本檔收錄本單元的練習題、完整解題思路與參考解答。 強烈建議先自己動手做:看完題目就闔上這份檔案,寫出你的版本、編譯、執行、卡住了再回來看「解題思路」; 真的做完了,再對照「參考解答」與「程式碼講解」。每題的完整程式碼也放在 exercises/ 資料夾,可直接編譯:

阅读文章 →
C Programming Language 更新于 2026-08-01

08 遞迴(Recursion)

遞迴是「函式呼叫自己」的技巧。聽起來像無窮迴圈,但只要每次呼叫都讓問題變小、 並在夠小時直接給出答案,遞迴就會優雅地收斂。許多問題(樹的走訪、分治演算法、河內塔) 用遞迴表達比迭代自然得多。

阅读文章 →
C Programming Language 更新于 2026-08-02

練習題與詳解 — 09 作用域與儲存類別(Scope & Storage Classes)

本檔收錄本單元的練習題、完整解題思路與參考解答。 強烈建議先自己動手做:看完題目就闔上這份檔案,寫出你的版本、編譯、執行、卡住了再回來看「解題思路」; 真的做完了,再對照「參考解答」與「程式碼講解」。每題的完整程式碼也放在 exercises/ 資料夾,可直接編譯:

阅读文章 →
C Programming Language 更新于 2026-08-02

09 作用域與儲存類別(Scope & Storage Classes)

程式一大,「誰看得到這個變數?它活多久?」就成了核心問題。 本單元整理 C 的作用域規則與儲存類別(auto、static、extern、register), 並說明多檔案專案的組織方式——標頭檔、include guard、以及 static 作為「檔案私有」的封裝工具。

阅读文章 →