C/C++ 固定寬度整數類型詳解:int8_t、int64_t、size_t、ssize_t 跨平台指南
為什麼需要固定寬度類型? C/C++ 標準只保證 char ≤ short ≤ int ≤ long ≤ long long 的相對大小,具體位寬因平台而異:
C語言歸併排序:有序數組合併算法完整實現與複雜度分析
歸併排序核心思想 分治法:將數組遞歸二分直到單元素,然後合併兩個有序數組為一個有序數組。本文聚焦於合併這一核心操作。 兩有序數組合併算法 問題定義 輸入:有
C++ 運算符重載實現矩陣加法:成員函數與友元函數對比
運算符重載基礎 運算符重載本質是特殊函數名:operator+、operator- 等。可作為成員函數或友元函數實現。 矩陣類設計 class Matrix
C語言數組查找重複數字:三種算法方案時間空間權衡分析
問題定義 長度為 n 的數組,元素範圍 [0, n-1]。某些數字重複,找出任意一個重複數字。例如 {2,3,1,0,2,5,3} → 返回 2 或 3。 三
C語言牛頓迭代法求解非線性方程:原理、實現與收斂分析
牛頓迭代法數學原理 求解 f(x) = 0 的根。給定初始猜測 x₀,利用切線近似曲線: x_{n+1} = x_n - f(x_n) / f(x_n) 幾何
C++ 無序數組第 K 小元素:隨機化選擇算法 O(n) 期望時間實現
問題定義 給定無序整數數組,找出第 k 小元素 (k 從 1 開始)。允許重複元素。例如 [3,1,4,1,5],k=3 返回 3 (排序後 [1,1,3,4,
C語言指針與數組深度解析:本質區別、二維數組與常見誤區
核心結論:指針 ≠ 數組 雖然在表達式中數組名會退化為指向首元素的指針,但它們在類型系統、內存佈局、語義上本質不同。 關鍵區別對比表 特性數組指針 本
C語言二分查找完整實現:遞歸與迭代、邊界條件陷阱深度解析
二分查找核心前提 數組必須有序(遞增或遞減) 支持隨機訪問(數組、vector、deque) 時間複雜度 O(log n),空間複雜度迭代 O(1)、遞歸 O
C++ 智能指針 shared_ptr 核心實現:引用計數、定制刪除器與弱指針
shared_ptr 核心機制 std::shared_ptr 通過控制塊管理引用計數,實現共享所有權語義: shared_ptr 內存佈局: +------
C++ 函數重載完整指南:規則、決議機制與最佳實踐
函數重載核心規則 同一作用域內,函數名相同但參數列表不同(類型、個數、順序),構成重載。返回類型不能作為重載依據。 重載決議機制:三階段匹配 精確匹配:類型
C++ 多態實現機制:虛函數表與基類指針動態綁定詳解
多態核心概念 C++ 多態通過虛函數表和基類指針/引用實現運行時動態綁定: 靜態綁定:編譯期確定函數調用 (普通函數、重載函數、模板) 動態綁定:運行期根據對
C語言 Windows 環境下獲取進程內存使用量實現
問題背景 在 Windows 平台上監控程序自身內存佔用,需調用 Windows API GetProcessMemoryInfo,屬於 PSAPI 庫功能。
C語言學生管理系統:完整源碼解析與架構優化指南
系統功能概覽 基於控制台的學生信息管理系統,支持增刪改查、成績統計、多字段排序,採用結構體數組靜態存儲,適合教學演示與基礎練習。 核心數據結構 #define
C++11 右值引用與 std::move 深度解析:從拷貝到移動的效率革命
前言:為什麼需要移動語義? C++98 中,臨時對象的拷貝構造是性能殺手: std::vector<int> getVector() { s
旋轉數組尋找最小值:二分查找 O(log n) 經典面試題完整解析
問題定義 輸入一個遞增排序數組的旋轉,輸出其中的最小元素。例如 {3,4,5,1,2} 是 {1,2,3,4,5} 的旋轉,最小值為 1。 核心觀察:兩段有序
C語言 printf 動態寬度格式化輸出:變量控制對齊技巧
問題場景 實現 ls 命令風格的文件名對齊輸出,寬度由運行時計算的最大文件名長度決定,而非編譯期常量。 核心難點 // 錯誤嘗試:編譯期格式字符串不支持變量
二叉樹最大寬度計算:遞歸與層序遍歷兩大算法深度解析
問題定義 二叉樹的寬度定義為某一層節點數的最大值。給定二叉樹根節點,求樹的最大寬度。 二叉樹節點定義 typedef struct TreeNode {