C/C++ 枚舉類型(enum)入門與進階用法
基本定義與語法 enum Color { RED, GREEN, BLUE }; // 默認值 0,1,2 enum Color2 { RED=1, GRE
C/C++ 數組與指針作函數參數進行排序的實現差異
本質:均為地址傳遞 數組名作參數會退化為指向首元素的指針,void f(int arr[]) 與 void f(int* arr) 等價。函數內修改元素將影響原
C++ const 修飾符完全指南:從基本用法到指針陷阱
基本語義 const 讓對象不可修改,編譯期強制執行。可修飾變量、指針、引用、成員函數等。 指針相關的兩大易混淆場景 1. 指向常量的指針 const i
使用 Winsock 獲取本機所有 IP 地址的完整指南
核心流程 調用 WSAStartup 初始化 Winsock 用 gethostname 取得主機名 用 gethostbyname 解析主機信息(含 IP
C++ iostream 標準庫全景解析:從標準流到文件與字符串流
iostream 體系架構 C++ 標準輸入輸出庫採用面向對象設計,核心類繼承關係如下: ios_base:基礎格式控制與狀態管理 basic_ios:模板化
C++ 賦值運算符重載:深拷貝與自我賦值檢查
賦值運算符 vs 拷貝構造函數 賦值運算符(operator=)用於「已存在對象」之間的賦值,而拷貝構造函數用於「新對象」的初始化。兩者皆需妥善處理動態資源管理
善用構造函數與無名對象簡化 C++ 運算符重載
問題:參數順序導致的重載冗余 當重載二元運算符(如 +)處理「對象 + 整數」與「整數 + 對象」時,若採用非成員函數,必須提供兩個參數順序相反的重載版本,造成
深入理解 C++ 前置與後置遞增運算符重載的差異
前置與後置遞增的本質區別 在 C++ 中,++a(前置遞增)與 a++(後置遞增)雖然都能使變數加一,但它們的運算過程與返回值類型截然不同。這一區別在運算符重載
C++ 新手避坑指南(續二):泛整型概念、值傳遞陷阱與數組越界災難
誤區 13:整型變量僅意味著整數 泛整型概念: (unsigned) char/short/int/long、指標、INT8/UINT32 等本質皆為整數,可互
C++ 新手避坑指南(續一):動態記憶體、名稱修飾與跨語言調用的常見誤區
誤區 8:濫用 malloc 反例: 全局指標 int *pInt,初始化函數 malloc(sizeof(int)),其他函數用 *pInt = 10。純屬為
用掌上電腦紅外線埠控制電視:C++ 實作 Sony 遙控協定
緣起 作者遺失 Sony 電視遙控器,購買的通用遙控器無法調整色彩設定。靈機一動,決定在手邊的 HP Jornada 525 掌上電腦(Windows CE 3
C++ 進階技術:對象持久化與序列化完整指南
持久對象概念 持久對象能在創建程序作用域外保持狀態 (寫入文件、網絡傳輸)。C++ 無內建持久化支援,需自行實現序列化 (對象→位流) 與反序列化。 內置類型
C++ 資料結構進階:線索二叉樹優缺點分析與二叉搜尋樹完整實現
線索二叉樹:廢棄的經典 利用葉子節點空指針域存儲前驅/後繼 (線索),附加標誌位區分。理論優點:O(1) 找中序前驅後繼、節省空間。實際缺陷: 標誌位至少佔
C++ 資料結構核心:二叉樹節點設計與四大遍歷算法實現
樹與二叉樹 現實存在樹結構 (族譜、目錄),二叉樹為人為模型:有序 (左/右不同)、允許空樹。鏈式存儲節點結構建議含雙親指針 (空間換時間): templat
C++ 資料結構深度剖析:遞歸與回溯的本質差異及迷宮最優解
遞歸 vs 回溯:指導思想對比 遞歸: 將軍派遣多隊並行探索,找到出口層層上報。計算機將並行串行化,借用系統棧。 回溯: 單人靠記憶 (棧) 試錯,死胡同回溯
C++ 資料結構進階:漢諾塔非遞歸算法完整實現與效能分析
接續上文:障礙清除後的現場恢復 當障礙盤被移走,需從保存棧 ns 彈出原當前柱資訊 (底盤號、目標柱、柱號),恢復 source、target_m、m,繼續搬運
C++ 資料結構實戰:迷宮問題的遞歸、回溯與牆壁跟隨法
迷宮神話與算法隱喻 希臘神話忒修斯靠線團 (Ariadnes thread) 殺死牛頭怪並逃出迷宮。線團本質是棧,記錄路徑以便回溯。書本常誤述為「探索時鋪線、死