download:C语言系统化精讲 重塑你的编程思想 打造坚实的开发基础
修炼内功最强语言,训练编程思想最有效语言,圣经般存在的语言,2020 TIOBE排行冠军语言——这些说的,都是C语言。每个优秀开发者都应该精通C语言,这门课程就是为所有没学过、没学好C语言的你专属打造,多种编程语言技术专家bennyhuo独家分享,带你系统、高效、轻松啃透C语言这个硬骨头!
适合人群
希望获得更深层次进阶语言的开发者
希望夯实语言基础的开发者
希望精雕细琢掌握多门语言的开发者
有面试/跳槽/晋升需求的开发者和在校生
技术储备要求
零门槛,有计算机基础、操作系统、编程基础和经验更佳
第1章 课程導學 試看
本章作爲课程内容引入,主要引見课程構造,课程的學習辦法等。希望妳能經過這門课程徹底控製程序言语的“道”和“術”。
共 2 節 (7分鍾) 收起列表
1-1 课前必讀
1-2 课程引見與學習指南 (06:20)試看
第2章 C言语必備根底 試看
本章主要解說演示編译環境搭建,IDE配置,調試辦法,代码標準作風等内容,爲课程後續内容做足準備工作。
共 5 節 (43分鍾) 收起列表
2-1 環境搭建【CLion/MSVC/MinGW】 (09:34)
2-2 第一行C言语代码【cmake工程構造】 (07:41)
2-3 程序調試辦法 (13:05)試看
2-4 C言语的代码作風【Google C CodeStyle/CLion配置代码作風】 (11:53)
2-5 【加餐】背景學問
第3章 C言语快速入門
本章中心是對C言语的根本數據類型、變量常量、運算符、分支和循環语句等必備學問停止解說,合適零根底的同窗快速上手,也合適C言语根底單薄的同窗查缺補漏。
共 10 節 (132分鍾) 收起列表
3-1 數據類型之int類型【不同係統版本差別】 (16:31)
3-2 數據類型之char類型【常見問題處理】 (15:11)
3-3 數據類型之浮點類型【實践應用技巧】 (09:43)
3-4 變量【内存地址剖析】 (10:00)
3-5 常量【常量修正秘笈】 (11:54)
3-6 運算符-1【易踩坑點】 (16:01)
3-7 運算符-2【難點打破】 (10:36)
3-8 條件分支语句 (16:05)
3-9 循環语句 (17:18)
3-10 案例:猜數字的游戲 (08:04)
第4章 函數與程序構造
本章解說C言语中函數的聲明、完成以及運用辦法,變量的類型和作用域。本章最後還會爲妳定製一個經典的漢诺塔的問題來理論函數的遞歸。置信經過本章的學習,妳就能夠獨立完成一些根本功用的程序開發了。
共 6 節 (55分鍾) 收起列表
4-1 函數根底【tips:Google命名標準】 (06:41)
4-2 函數的原型【空參數列表與 C++的區別】 (08:50)
4-3 變量的類型和作用域【Compiler Explorer查看匯編指令】 (16:26)
4-4 函數的變長參數【比照Java的變長參數】 (07:11)
4-5 函數的遞歸【C言语完成斐波那契數列】 (10:22)
4-6 案例:漢诺塔 (05:29)
第5章 預處置和宏
本章解說C言语的預處置和宏的運用辦法,包括文件包含、條件編译、宏函數等特性的了解和應用。本章最後會帶妳深度比照宏和函數完成一個便當打印輸出的PRINTLNF 宏。
共 5 節 (53分鍾) 收起列表
5-1 文件包含【領略編译器宏之以小搏大】 (09:45)
5-2 案例:自定義頭文件 (07:35)
5-3 宏函數 (10:46)
5-4 條件編译【控製實践應用場景】 (11:15)
5-5 案例:完成 PRINTLNF (13:26)
第6章 玩轉數組
本章將帶妳吃透C言语中的數組,包括數組在内存當中的存儲方式,字符串的根本概念,數組作爲函數參數傳送等内容。本章最後也會帶妳就數組元素的排序這一經典問題停止理論,加深對數組自身的了解。
共 7 節 (62分鍾) 收起列表
6-1 數組根底【C言语設計哲學】 (10:34)
6-2 數組的邊境 (09:50)
6-3 字符串 (08:35)
6-4 函數的數組類型參數【C言语極致效率之源】 (04:45)
6-5 二維數組【數組參數的正確運用姿態】 (10:11)
6-6 案例:打亂數組的次第【各種場景應用】 (06:02)
6-7 案例:數組元素的排序【Lomuto分割法】 (11:04)
第7章 吃透指針 試看
本章將帶妳吃透C言语的指針,包括指針的運算、函數參數傳送以及返回值的内存復製過程、動態内存分配、函數指針等特性的剖析及應用。本章最後還會分離宏和指針深度分析一個简單的交流變量值的多種完成辦法以及指針版本的快速排序算法的完成。...
共 10 節 (105分鍾) 收起列表
7-1 指針根底【摸清實質帶妳愛上指針】 (09:05)
7-2 只讀指針變量與只讀變量指針 (04:43)
7-3 特殊的指針【運用忌讳】 (09:35)
7-4 指針的運算【各式魔法操作】 (10:26)試看
7-5 左值和右值【只需記住這兩點】 (06:54)
7-6 指針參數作爲返回值【經過匯編理解函數返回值機製】 (11:21)
7-7 動態内存分配【打破面試高頻考點】 (14:30)
7-8 函數指針與typedef (14:09)
7-9 案例:交流兩個變量的值 (14:49)
7-10 案例:指針版本的快速排序【Hoare分割法】 (08:39)
第8章 聚合數據類型
本章將解說C言语的聚合數據類型,包括構造體、結合體、枚舉等特性及應用,也重點分析構造體的内存對齊特性,本章最後會分離前面的學問給出字節序判別和單链表的根本完成的案例。
共 6 節 (76分鍾) 收起列表
8-1 構造體【内存佔用剖析】 (15:34)
8-2 構造體的内存對齊【内存佔用優化】 (14:42)
8-3 結合體【運用場景剖析】 (08:32)
8-4 枚舉【多言语比照】 (12:25)
8-5 案例:判別字節序 (07:03)
8-6 案例:單链表的根本完成 (16:47)
第9章 字符串的應用
本章將解說規範庫中對字符串提供的支持,包括窄字符與寬字符相關的字符類型判別,字符串比擬、衔接、復製,原始内存的肅清、復製、挪動等工具函數的應用,以及窄字符與寬字符的轉換函數及編码設置的辦法,最後會對C99新增的restrict、C11新增的平安版本函數做剖析。...
共 10 節 (73分鍾) 收起列表
9-1 判別字符的類型及原理的分析 (08:59)
9-2 字符串與其他數值類型的轉換 (14:21)
9-3 字符串的長度與比擬 (07:34)
9-4 查找字符與子串 (06:00)
9-5 字符串的拆分 (09:41)
9-6 字符串的衔接和復製 (03:14)
9-7 幾個常見的内存操作函數 (07:51)
9-8 C99的restrict (02:01)
9-9 C11的平安版本的函數 (03:44)
9-10 寬字符串與窄字符串的轉換 (08:56)
第10章 時間的應用
本章將解說規範庫中對時間提供的支持,包括計算機软件當中各類常見的時間概念,獲取係統時間、日歷時間的辦法,時間的格式化和解析的辦法等,由於各平台對時間的支持存在一定差別,我們運用條件編译完成一個跨平台的毫秒時間戳的獲取函數,爲妳編寫跨平台的代码提供思緒。...
共 6 節 (49分鍾) 收起列表
10-1 時間的根本概念 (08:50)
10-2 獲取係統時間 (13:25)
10-3 獲取日歷時間 (06:36)
10-4 格式化時間 (07:42)
10-5 解析時間 (07:57)
10-6 計算時間差 (04:09)
第11章 文件的輸入輸出
本章將解說規範庫中對文件輸入輸出的支持,包括文件流的概念,文件流按字符、按行、按字節讀寫函數的運用,並運用多個版本的文件復製的案例贯串全章,在比照和迭代當中深入了解不同的讀寫方式之間的差別,加深妳對文件流緩衝等概念的了解。...
共 14 節 (126分鍾) 收起列表
11-1 輸入輸出流 (10:27)
11-2 文件流的緩衝 (09:55)
11-3 讀寫一個字符 (06:46)
11-4 案例:復製文件-1 (10:11)
11-5 讀寫一行字符 (07:12)
11-6 案例:復製文件-2 (11:12)
11-7 讀寫指定大小的字節 (09:45)
11-8 案例:序列化和反序列化的根本完成 (11:24)
11-9 案例:復製文件-3 (06:29)
11-10 格式化文本的輸入輸出 (03:31)
11-11 案例:重定向規範輸入輸出流 (10:53)
11-12 案例:統計文件字符個數 (08:38)
11-13 輸入輸出流的位置 (08:19)
11-14 其他常見的文件操作 (10:22)
第12章 線程與並發
本章將解說C言语規範庫從C11引入的線程以及並發相關學問。線程和並發是開發人員的必備根底,本章内容除了協助妳在理論當中更好地理解諸如pthread這樣的線程庫以外,關於其他現代言语的學習也是十分有益的。本章最後綜合所學完成處置復雜的線程返回結果、並發任務執行與函數回調兩個理論案例。...
共 10 節 (74分鍾) 收起列表
12-1 線程根底 (04:01)
12-2 線程的根本用法 (10:57)
12-3 資源的線程平安問題 (09:12)
12-4 volatile (03:51)
12-5 原子類型 (09:38)
12-6 鎖 (05:42)
12-7 Thread Local (08:26)
12-8 反作用與純函數 (03:05)
12-9 案例:處置復雜的線程返回結果 (05:34)
12-10 案例:並發任務執行與函數回調 (12:44)
第13章 編译、链接和庫
本章將基於gcc解說C言语編译過程中的各個環節和細節,協助妳理解C言语是如何從源码一步一步編译成最後的可執行文件,也會解說如何將本人的模塊作爲依賴導出,如何運用conan來管理第三方依賴,本章最後還會以C++和Java爲例傳授妳如何運用其他言语來調用C言语庫。...
共 7 節 (59分鍾) 收起列表
13-1 可執行程序的編译過程 (09:06)
13-2 静態链接庫的構建和運用 (06:12)
13-3 動態链接庫的編译和運用 (05:32)
13-4 運用CMake完成庫的編译和链接 (09:28)
13-5 運用Conan管理依賴 (11:45)
13-6 運用C++調用C程序 (09:36)
13-7 運用Java調用C (06:56)
第14章 GUI 編程理論
本章將解說Linux桌面GUI的主流開發技術GTK+,基於該框架理解如何運用C言语開發 GUI應用,控製如何完成跨平台的GUI應用程序開發(支持Windows/macOS/Linux),還將理解運用GTK+開發GUI程序的根本辦法,包括如何創立Window,經過css來編輯控件款式,運用Glade快速完成UI規劃等。最後我們將仿照macOS的計算器完成一個功用相對...
共 10 節 (132分鍾) 收起列表
14-1 GUI開發概述【各平台GUI計劃】 (03:51)
14-2 裝置GTK【裝置GTK的各種問題處理】 (08:00)
14-3 編寫第一個GTK程序 (16:42)
14-4 爲GTK應用配置主題 (16:13)
14-5 運用Xml完成規劃 (09:57)
14-6 運用Glade完成規劃【進步規劃開發效率的大招】 (18:02)
14-7 擴展:運用CSS調整控件款式 (15:03)
14-8 打包發佈GTK程序 (13:09)
14-9 GTK的面向對象設計理念 (12:38)
14-10 GTK的内存管理 (17:28)
第15章 綜合案例:桌面跨平台高仿Mac版計算器
本章將綜合前面所學,帶大家從案例需求剖析開端,到中心模塊的接口設計,再到中心模塊的業務逻輯及UI完成,手把手打造一款桌面跨平台高仿Mac版計算器。
共 8 節 (86分鍾) 收起列表
15-1 案例效果展現 (03:22)
15-2 計算器中心模塊接口設計 (12:20)
15-3 運用控製台調試計算器的輸入輸出 (08:22)
15-4 測試用例編寫與單元測試 (10:31)
15-5 計算器中心逻輯完成-1 (09:02)
15-6 計算器中心逻輯完成-2 (11:38)
15-7 計算器UI規劃開發 (09:14)
15-8 計算器UI逻輯接入及案例最終完好完成 (20:41)
第16章 綜合案例:桌面跨平台的下载工具
本章作爲课程最後的綜合案例,將帶妳從零開端開發一個桌面跨平台的下载工具,包括運用Conan管理依賴,運用GTK+開發UI,運用curl訪問網络,運用sqlite來存儲任務,運用獨立的線程來承载下载任務等等。本章綜合性較強,我們力圖盡可能多地掩蓋课程當中所學的學問,協助大家進一步加深對C言语的認識和了解,培育運用C言语構建...
共 14 節 (172分鍾) 收起列表
16-1 案例根本功用及環境配置引見 (12:06)
16-2 SQLite數據庫引入及封裝 (16:31)
16-3 完成對任務數據構造的增删改查 (06:08)
16-4 CURL的引入及下载逻輯的封裝 (14:45)
16-5 文件名的解析及下载逻輯的考證 (20:44)
16-6 線程池的引入以及下载相關接口的封裝 (15:41)
16-7 下载软件UI規劃的引見 (02:40)
16-8 完成下载任務的添加-1 (11:44)
16-9 完成下载任務的添加-2 (11:59)
16-10 窗口内存走漏的剖析與處理 (08:02)
16-11 完成下载任務列表-1 (17:57)
16-12 完成下载任務列表-2 (10:53)
16-13 完成下载任務列表-3 (18:27)
16-14 下载软件的功用演示 (04:11)
第17章 课程總結
本章作爲课程的最後一章,我們將帶妳整體梳理课程所學的内容,並提供一些後續的學習倡議,在课程問答區教師等著與妳進一步交流。
共 1 節 (7分鍾) 收起列表
17-1 课程總結 (06:33)
本课程已結束