Beej's Guide 系列連載 04:IP 位址、位元組序與 Socket 結構體
IPv4 與 IPv6 位址格式 IPv4:32 位,點分十進制,如 192.0.2.111。 IPv6:128 位,冒號十六進制,如 2001:0db8:c
Beej's Guide 系列連載 03:網路理論與分層模型
資料封裝 封包在發送端層層包裝(應用→傳輸→網路→連結→物理),接收端層層拆封。這是理解網路程式設計的基石。 OSI 七層模型 vs TCP/IP 四層模型
Beej's Guide 系列連載 02:Socket 概念與兩大類型
什麼是 Socket? Socket 是使用標準 Unix 檔案描述符(file descriptor)與其他程式通訊的介面。Unix 哲學:「一切皆檔案」——
Windows 取得本機 IP 位址:Winsock 實作
核心邏輯 初始化 Winsock(WSAStartup)。 取得主機名稱(gethostname)。 解析主機名稱獲取 HOSTENT(gethostbyna
數值計算經典演算法 C/C++ 實作:牛頓法、高斯消去、拉格朗日插值
範例一:牛頓迭代法求非線性方程根 求 f(x)=x³-3x-1 在 x≈2 附近的實根,精度 1e-4。 EPS) { mid = (a +
自定義 STL 風格輸入迭代器:line_iterator 實作
動機 STL 以「容器、迭代器、演算法」三位一體聞名。標準庫提供 istream_iterator 但按詞元(空白分隔)讀取,無法直接按「行」讀取。本文實作一個
C 語言指標參數傳遞實驗:指標本身是「值傳遞」
核心問題 函數參數為指標時,調用者傳入的指標值會被複製(值傳遞)。函數內修改指標變數本身(指向新位址)不影響調用者的指標;但透過指標修改所指內容則會影響調用者。
C 語言內功修煉與軟體工程:劍氣與心法的統一
爭論焦點 許多軟體工程師推崇 C++/Java 等 OO 語言,認為庫豐富、開發效率高、維護成本低,視用 C 重造輪子為「炫技」或「學院派」。但這觀點忽略了「內
Beej's Guide to Network Programming 系列連載 01:導讀
系列緣起 Socket 程式設計讓你抓狂?man page 看不懂?connect() 前還要 bind() 搞不清?本系列翻譯自 Brian Beej Jor
C 語言 memcpy 導致段錯誤:字串常量不可寫
問題現象 在 Linux 下編譯執行以下程式會發生「段錯誤」,但在某些 Unix 系統卻能正常運行: int main() { char *a = 11
Linux C 程式設計入門:從 Ubuntu 與 Eclipse CDT 開始
前言:為何選擇 Linux C 開發? 許多開發者初入職場時被迫選擇 .NET 或 Java,但 Linux 在伺服器領域憑藉開源、穩定、安全的優勢佔據主導地位
C 語言函數動態調用實現(參考 UnderC 專案)
引言 在 C 語言中實現函數的動態調用(即在運行時根據名稱或地址調用任意函數)是一項進階技術,常用於解釋器、插件系統或腳本引擎。本文參考開源專案 UnderC
數組與指標背後的記憶體真相:何時相同、何時不同、為什麼函數參數會退化
回顧:聲明的三種語境 上一篇確立:數組名在「表達式中」退化為指標。但聲明語境下有三種情況: 外部數組聲明:extern int a[]; → 仍是數組類型
深度解析:C 語言中陣列與指標的本質區別(從內存與編譯視角)
前言 「陣列與指標的區別」是 C 語言學習者永恆的困惑。課本常說「陣列名是指標」,實際上這是一個危險的過度簡化。本文從內存佈局、編譯期符號解析、運行期訪問機制三
g++ 鬼魅錯誤 malloc(): memory corruption 根因:遺漏 #pragma pack(pop) 導致堆破壞
現象:看似隨機的 heap corruption malloc.c:3096: sYSMALLOc: Assertion `(old_top == ...) f
C 宏進階:# 字串化運算符與逗號表達式的妙用
# 運算符:將宏參數「字串化」 在宏定義中,# 置於參數前,會將該參數的原始語彙轉換為字串常值(雙引號包裹)。這在除錯追蹤、日誌輸出極為實用。 基本規則
C++ 類成員函數作為回調函數的正確姿勢:static 與 std::function 實戰
什麼是回調函數? 回調函數本質是「函數指標作為參數傳遞」,由被調用者在特定事件/條件觸發時反向調用。核心流程: 調用者提供一個函數地址(回調)。 被調