C/C++ 參數傳遞全解析:形參、實參、傳值、傳引用、傳指標
術語釐清 形參:函數定義/聲明中的參數,作為「佔位符」接收實參。 實參:函數調用時實際傳入的變數/表達式/值。 三種傳遞機制對比 機制語法記
GTK+ 介面開發入門:使用 GtkBuilder 載入 UI 定義
為什麼選 GtkBuilder? 傳統 GTK+ 程式將 UI 佈局硬編碼在 C 代碼中,修改介面需重新編譯。**GtkBuilder** 讓開發者將 UI 定
順序表完整實現:初始化、增刪查、動態擴容
什麼是順序表 順序表是線性表的**順序存儲結構**,用一塊連續記憶體依次存放元素。特點:隨機存取 O(1),插入/刪除需移動元素 O(n)。本文給出帶**動態擴
C 語言字串陣列兩種實作:指標陣列 vs 二維陣列
前言 C 語言沒有內建字串類型,字串本質是「以 \0 結尾的 char 陣列」。要存放多條字串,常見兩種做法:指標陣列 與 二維陣列。兩者在記憶體佈局、可修改性
C++ STL vector 是模板而非類型:正確使用 vector::size_type
誤區由來 初學 STL 時常見錯誤:直接寫 vector::size_type i;,編譯器報錯 error C2955: vector : use of cl
數組中出現次數超過一半的數字:Boyer-Moore 投票算法詳解
問題背景 在一個長度為 n 的數組中,若存在一個數字出現次數超過 n/2,我們稱之為「多數元素」。這道經典面試題雖然用哈希表或排序也能解決,但時空複雜度較高。本
C語言控制台貪食蛇遊戲完整實現與核心邏輯解析
前言:經典項目練習的最佳教具 貪食蛇涵蓋遊戲循環、鍵盤輸入、雙緩衝渲染、鏈表/陣列數據結構、隨機生成、碰撞檢測等核心遊戲開發概念,且無需圖形庫,僅用 conio
C語言二維數組指針完全圖解:行指針、列指針與內存佈局
前言:二維數組指針為何讓人頭大? int arr[3][4] 在內存中是連續 12 個 int,但涉及 arr、arr[0]、*arr、arr+1、*(arr+
Valgrind 實戰指南:Linux 下內存錯誤檢測與性能分析神器
前言:為什麼 C/C++ 開發者必須會用 Valgrind? 手動內存管理賦予 C/C++ 極致性能,也帶來內存洩漏、越界訪問、使用已釋放內存、未初始化讀取等難
C語言 sizeof 與 strlen 核心區別深度解析:運算符 vs 函數、編譯期 vs 運行期
前言:一道經典面試題的背後 sizeof 與 strlen 是 C 語言中最易混淆、最高頻考察的知識點。本質上:sizeof 是編譯期運算符,求類型/表達式佔用
二分查找算法詳解:原理、代碼實現與邊界條件完整指南
前言:為什麼二分查找是必考基本功? 二分查找(Binary Search)是計算機科學中最基礎、最高效的查找算法之一,時間複雜度 O(log n),空間 O(1
C++函數返回陣列的三種正確姿勢與記憶體管理陷阱
前言:為什麼不能直接返回陣列? C/C++ 中陣列名在表達式中會退化為指向首元素的指針,但函數返回類型不能是陣列。初學者常犯錯:在函數內定義區域陣列並返回其指針
補碼本質探究:為什麼計算機用補碼表示負數?
前言:從「符號位」到「模運算」的思維躍遷 早期計算機嘗試用「符號位 + 絕對值」表示負數(原碼),但加減法需分正負、比較大小、處理 ±0 等邊界,電路極其複雜。
嵌入式Web開發實戰:C語言CGI程序設計全攻略
前言:從 Java Web 到嵌入式 CGI 的思維轉變 作者從 Java Web 轉型嵌入式開發,面臨記憶體受限(Flash 僅 1MB)、無 GC、需手動管
C語言自增自減運算符陷阱:未定義行為與編譯器差異深度解析
核心結論:不要在同一表達式中多次修改同一變量 C 標準規定: 在兩個序列點之間,對同一標量對象進行多次修改,或修改後又讀取其值(非為了確定新值),行為未定義 (