最小生成樹 Kruskal 算法 C 語言完整實現與工程化細節
算法原理回顧 Kruskal 算法屬於貪婪策略:將所有邊按權重升序排序,依次考慮每條邊,若其兩端點不在同一連通分量(不形成環),則加入 MST,並合併兩分量。核
C語言實現奇偶排序:奇數升序在前、偶數升序在後
題目要求 輸入 10 個整數,輸出排序後的序列:奇數在前、偶數在後,各自升序排列。例如輸入 10 9 8 7 6 5 4 3 2 1,輸出奇數部分 1 3 5
Objective-C 實現「私有方法」的兩種模式與本質限制
背景:動態語言無真私有 Objective-C 為動態語言,方法調用實為消息發送(objc_msgSend),編譯期不綁定方法地址,因此不存在 C++/Java
GTK+ 3 入門:創建窗口、添加按鈕與信號槽機制詳解
程序功能 構建一個頂層窗口,包含一個標籤為「Hello World」的按鈕。點擊按鈕控制台輸出「你好,世界」,關閉窗口退出程序。演示 GTK+ 核心概念:窗口層
Linux 核心 hexdump 實作分析:print_hex_dump 系列函式詳解
核心工具函式位置 原始碼位於 kernel/lib/hexdump.c,提供標準化的二進位資料列印功能,廣泛用於驅動除錯。 核心轉換邏輯:位元組 → ASCI
SH79F166A PWM 模組初始化與應用範例:4kHz 50% 占空比
晶片與時脈設定 MCU:SH79F166A (12 MHz 晶振) PWM 時脈分頻:PWM_DIVI2 (÷2) → 6 MHz 目標頻率:4
STM32 DMA 實戰 (一):SRAM ↔ Flash 高速資料搬移完整教學
為什麼用 DMA? 解放 CPU:資料搬移由硬體自動完成,CPU 可執行其他任務。 高速:記憶體間直接傳輸,不經 CPU,頻率可達系統時脈。 低延
pinyin.c 與 Unicode 漢字編碼表對應原理解析:O(1) 取拼音首字母
核心原理 Unicode 基本多文種平面 (BMP) 中,常用漢字編碼範圍 U+4E00 ~ U+9FA5(十進位 19968 ~ 40869),共 20902
C 函式參數入棧組合語言深度解析:為何 char 參數位址反而遞減?
現象觀察 同樣的函式 print(a,b,c),參數型別不同,輸出位址順序竟然相反: int 參數:位址 遞增(0x22FF40, 0x22FF44, 0
C 指標進階(25):結構體與 malloc 動態記憶體技巧——訊息佇列實戰
核心技巧:柔性陣列成員 Linux 核心訊息佇列使用的 struct msgbuf 定義: struct msgbuf { long mtype;
pthread_mutex_init() 互斥鎖完整範例:多執行緒同步化實戰
程式碼結構說明 範例展示兩個執行緒共享全域計數器 counter,透過互斥鎖保護臨界區,避免競爭條件。 關鍵程式碼片段 #include #include
從最近素數問題看算法優化:試除法到篩法再到預計算質數表的極致提速
問題描述 給定整數 X,找出與其距離最近的素數。若 X 本身是素數則返回 X;若兩側距離相等,返回較大者。多組查詢,需高效批量處理。 演進歷程與性能對比 版
C語言指針原理(26) - 字符串常量、函數指針、命令行參數
1. 字符串常量與指針算術 字符串字面量存儲在只讀數據段,類型為 const char[],退化為 const char*。指針算術可直接偏移: printf(
GDB調試器進階使用指南(三) - 值歷史、便利變量、命令歷史、初始化文件、自定義命令
1. 值歷史 每次 print 輸出的值自動記錄在值歷史中,可引用歷史值。 引用語法 語法含義 $最近一次的值 $n第 n 個歷史值($1 為最早) $$倒
GDB調試器進階使用指南(二) - 附加進程、條件斷點、命令序列
1. 附加到運行中的進程 適用於調試已在後台運行的程序(如服務端、守護進程)。 步驟演示 # 1. 編譯帶調試信息的程序 gcc -g -o test_att
C語言指針進階示例 - 函數指針、指針數組、參數傳遞
代碼功能概覽 本文展示一組指針相關的綜合示例,涵蓋:值傳遞 vs 指針傳遞、字符查找(單級/雙級指針)、函數指針變量、函數指針類型定義、回調函數、命令行參數解析
C語言文件操作完整指南 - 從基礎到隨機訪問
1. 文件與流 C 語言將文件視為位元組流。程序啟動自動打開三個標準流:stdin(鍵盤)、stdout(屏幕)、stderr(錯誤輸出)。文件操作通過 FIL