嵌入式 Linux 與物聯網軟件開發 : C語言內核深度解析 嵌入式Linux与物联网软件开发:C语言内核深度解析

朱有鵬, 張先鳳

買這商品的人也買了...

商品描述

《嵌入式Linux與物聯網軟件開發(C語言內核深度解析)》的原型思想和內容,發源於朱有鵬老師早些年的研發和學習經歷,發展於後來數年的線下培訓授課經歷,並最終成熟於視頻課程《C語言高級專題》(隸屬於《朱有鵬老師嵌入式Linux核心課程》系列視頻課程的第4部分)。 本書正是基於這套視頻課程的課件整理而來,參與各章節整理和編寫的都是學習了視頻課程的學生,最終由朱有鵬老師和張先鳳老師檢驗並完善成書。 這些參與編寫的同學有的已經工作數年、有的則尚未走出大學校園。選擇他們合作創作本書,就是為了告訴讀者:做技術並不要求你天賦異稟,只需要你感興趣、願意去探索和練習,你也可以成功。

作者簡介

張先鳳,《朱老師物聯網大講堂》聯合創始人、金牌講師;長期從事企業級物聯網項目研發和物聯網相關教學工作,對物聯網各關鍵環節技術均有所涉獵,對物聯網未來發展和教學有著獨特見解,立志長期紮根物聯網相關研發和教學工作。張先鳳《朱老師物聯網大講堂》聯合創始人、金牌講師;長期從事企業級物聯網項目研發和物聯網相關教學工作,對物聯網各關鍵環節技術均有所涉獵,對物聯網未來發展和教學有著獨特見解,立志長期紮根物聯網相關研發和教學工作。

目錄大綱

第1章 C語言與內存1
1.1 引言
1.2 計算機程序運行的目的
1.2.1 什麽是程序
1.2.2 計算機運行程序的目的
1.2.3 靜態內存SRAM和動態內存
1.2.4 馮·諾伊曼結構和哈佛結構
1.2.5 總結:程序運行為什麽需要內存呢
1.2.6 深入思考:如何管理內存(無OS時,有OS時)
1.3 位、字節、半字、字的概念和內存位寬
1.3.1 深入瞭解內存(硬件和邏輯兩個角度)
1.3.2 內存的邏輯抽象圖(內存的編程模型)
1.3.3 位和字節
1.3.4 字和半字
1.3.5 內存位寬(硬件和邏輯兩個角度)
1.4 內存編址和尋址、內存對齊
1.4.1 內存編址方法
1.4.2 關鍵:內存編址是以字節為單位
1.4.3 內存和數據類型的關系
1.4.4 內存對齊
1.5 C語言如何操作內存
1.5.1 C語言對內存地址的封裝
1.5.2 用指針來間接訪問內存
1.5.3 指針類型的含義
1.5.4 用數組來管理內存
1.6 內存管理之結構體
1.6.1 數據結構這門學問的意義
1.6.2 ZUI簡單的數據結構:數組141.6.3 數組的優缺點
1.6.4 結構體隆重登場
1.6.5 題外話:結構體內嵌指針實現面向對象
1.7 內存管理之棧(stack)
1.7.1 什麽是棧
1.7.2 棧管理內存的特點(小內存、自動化)
1.7.3 棧的應用舉例:局部變量和函數調用
1.7.4 棧的約束(預定棧大小不靈活,怕溢出)
1.8 內存管理之堆
1.8.1 什麽是堆
1.8.2 堆管理內存的特點(大塊內存、手工分配/使用/釋放)
1.8.3 C語言操作堆內存的接口(malloc/free)
1.8.4 堆的優勢和劣勢(管理大塊內存、靈活、容易內存泄漏)
1.8.5 靜態存儲區
課後題
第2章 C語言位操作
2.1 引言
2.2 常用位操作符
2.2.1 位與(&)
2.2.2 位或(|)
2.2.3 位取反(~)
2.2.4 位異或(^)
2.2.5 左移位(<<)
2.2.6 右移位(>>)
2.3 位操作與寄存器
2.3.1 寄存器的操作
2.3.2 寄存器特定位清零用&
2.3.3 寄存器特定位置1用|
2.3.4 寄存器特定位取反用~
2.4 位運算構建特定二進制數
2.4.1 使用移位獲取特定位為1的二進制數
2.4.2 結合位取反獲取特定位為0的二進制數
2.4.3 總結
2.5 位運算實戰演練
2.5.1 給定整型數a,設置a的bit3,保證其他位不變
2.5.2 給定整型數a,設置a的bit3-bit7,保持其他位不變
2.5.3 給定整型數a,清除a的bit15,保證其他位不變
……
第3章 指針才是C語言的精髓
第4章 C語言覆雜表達式與指針高級應用
第5章 數組&字符串&結構體&共享體&枚舉
第6章 C語言的預處理、函數和函數庫
第7章 存儲類&作用域&生命周期&鏈接屬性
第8章 C語言關鍵細節討論
第9章 鏈表&狀態機&多線程
第10章 程序員和編譯器的曖昧
附錄 答案