最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

零基礎(chǔ)入門學習C語言:帶你學C帶你飛

2023-06-08 20:37 作者:今天天氣不錯風也溫柔  | 我要投稿

鏈接:https://pan.baidu.com/s/1hQTxKr-jHuPzlzIZ3DqzAg?pwd=tx6f?

提取碼:tx6f

本書提倡“理解為主,應用為王”,通過列舉一些有趣的例子,讓讀者在實踐中理解概念。本書從變量、數(shù)據(jù)類型、取值范圍等基本知識開始講解,深入介紹分支與循環(huán),講到指針的時候,分散難點,依次講解數(shù)組與指針、函數(shù)與指針、結(jié)構(gòu)體與指針,每個知識點結(jié)合恰當?shù)膶嵗M行演示,環(huán)環(huán)相扣,內(nèi)容詳盡。
編程知識深似海,小甲魚沒辦法僅通過一本書將所有的知識都灌輸給讀者,但能夠做到的是培養(yǎng)讀者對編程的興趣,提高編寫代碼的水平,鍛煉自學的能力。

作者簡介

小甲魚(本名 李佳宇)
魚C工作室創(chuàng)始人,旗下魚C論壇,現(xiàn)注冊用戶50多萬,用戶累計發(fā)表在線求助類帖子近200萬,至今已有十余年編程教學工作經(jīng)驗;暢銷書《零基礎(chǔ)入門學習Python》作者,該書自2016年11月出版以來,廣受讀者的歡迎和好評,截至2019年3月,已累計印刷13萬冊。
免費推出《帶你學C帶你飛》《零基礎(chǔ)入門學習Python》《零基礎(chǔ)入門學習Web開發(fā)(HTML5&CSS3)》《極客Python》《數(shù)據(jù)結(jié)構(gòu)和算法》《Windows程序設計》《解密系列》等系列視頻教程。在網(wǎng)易云課堂、百度傳課、51CTO、嗶哩嗶哩等網(wǎng)站上因通俗易懂“接地氣”的教學方式而廣受網(wǎng)友好評,多次被首頁及相關(guān)專題推薦,累計學習人數(shù)超過千萬。

目錄

第1章 初窺門徑.

1.1 C語言被淘汰了嗎... 1

1.2 莫爾斯密碼... 2

1.3 機器語言... 2

1.4 匯編語言... 3

1.5 C語言... 4

1.6 C語言的優(yōu)勢... 5

1.7 第一個程序... 6

1.8 打印... 7

1.9 變量... 11

1.10 常量... 14

1.10.1 定義符號常量... 14

1.10.2 標識符... 15

1.10.3 字符串常量... 15

1.11 數(shù)據(jù)類型... 16

1.12 sizeof運算符... 17

1.13 signed和unsigned. 19

1.14 取值范圍... 20

1.15 字符... 25

1.16 字符串... 28

1.17 運算符... 30

1.17.1 算術(shù)運算符... 31

1.17.2 目... 31

1.17.3 表達式... 32

1.17.4 運算符的優(yōu)先級和結(jié)合性... 32

1.17.5 類型轉(zhuǎn)換... 34

第2章 了不起的分支和循環(huán)... 37

2.1 分支結(jié)構(gòu)... 37

2.1.1 關(guān)系運算符... 37

2.1.2 關(guān)系表達式... 38

2.1.3 邏輯運算符... 38

2.1.4 邏輯表達式... 39

2.1.5 短路求值... 40

2.1.6 if語句... 41

2.1.7 switch語句... 46

2.1.8 分支結(jié)構(gòu)的嵌套... 48

2.1.9 懸掛else. 51

2.1.10 等于號帶來的問題... 53

2.2 循環(huán)結(jié)構(gòu)... 54

2.2.1 while語句... 54

2.2.2 do-while語句... 57

2.2.3 for語句... 58

2.2.4 靈活的for語句... 60

2.2.5 循環(huán)結(jié)構(gòu)的嵌套... 63

2.2.6 break語句... 65

2.2.7 continue語句... 68

2.3 拾遺... 69

2.3.1 賦值運算符... 69

2.3.2 復合的賦值運算符... 70

2.3.3 自增自減運算符... 70

2.3.4 逗號運算符... 71

2.3.5 條件運算符... 72

2.3.6 goto語句... 73

2.3.7 注釋... 74

第3章 數(shù)組... 76

3.1 一維數(shù)組... 77

3.1.1 定義一維數(shù)組... 77

3.1.2 訪問一維數(shù)組... 77

3.1.3 循環(huán)與數(shù)組的關(guān)系... 78

3.1.4 數(shù)組的初始化... 79

3.1.5 可變長數(shù)組... 79

3.1.6 字符數(shù)組... 80

3.2 字符串處理函數(shù)... 81

3.2.1 獲取字符串的長度... 81

3.2.2 復制字符串... 82

3.2.3 連接字符串... 84

3.2.4 比較字符串... 85

3.3 二維數(shù)組... 86

3.3.1 定義二維數(shù)組... 86

3.3.2 訪問二維數(shù)組... 87

3.3.3 二維數(shù)組的初始化... 87

第4章 指針... 90

4.1 指針和指針變量... 91

4.1.1 定義指針變量... 92

4.1.2 取地址運算符和取值運算符... 92

4.1.3 避免訪問未初始化的指針... 94

4.2 指針和數(shù)組... 94

4.2.1 數(shù)組的地址... 94

4.2.2 指向數(shù)組的指針... 96

4.2.3 指針的運算... 97

4.2.4 指針和數(shù)組的區(qū)別... 99

4.2.5 指針數(shù)組和數(shù)組指針... 100

4.2.6 指針和二維數(shù)組... 105

4.2.7 數(shù)組指針和二維數(shù)組... 108

4.3 void指針... 109

4.4 NULL指針... 112

4.5 指向指針的指針... 113

4.6 指針數(shù)組和指向指針的指針... 114

4.7 再講數(shù)組指針和二維數(shù)組... 116

4.8 常量和指針... 118

4.9 指向常量的指針... 119

4.10 常量指針... 120

4.10.1 指向非常量的常量指針... 120

4.10.2 指向常量的常量指針... 121

4.10.3 指向“指向常量的常量指針”的指針... 122

第5章 函數(shù)... 124

視頻講解:271分鐘(14個)鐘

5.1 函數(shù)的定義和聲明... 125

5.1.1 熱身... 125

5.1.2 函數(shù)的定義... 126

5.1.3 函數(shù)的聲明... 127

5.2 函數(shù)的參數(shù)和返回值... 128

5.2.1 形參和實參... 129

5.2.2 傳值和傳址... 130

5.2.3 傳數(shù)組... 131

5.2.4 可變參數(shù)... 134

5.3 指針函數(shù)和函數(shù)指針... 135

5.3.1 指針函數(shù)... 135

5.3.2 誤區(qū):返回指向局部變量的指針... 136

5.3.3 函數(shù)指針... 137

5.3.4 函數(shù)指針作為參數(shù)... 138

5.3.5 函數(shù)指針作為返回值... 139

5.4 局部變量和全局變量... 140

5.4.1 局部變量... 140

5.4.2 全局變量... 142

5.4.3 不要大量使用全局變量... 145

5.5 作用域和鏈接屬性... 146

5.5.1 代碼塊作用域... 146

5.5.2 文件作用域... 147

5.5.3 原型作用域... 148

5.5.4 函數(shù)作用域... 148

5.5.5 鏈接屬性... 148

5.6 生存期和存儲類型... 151

5.6.1 生存期... 151

5.6.2 存儲類型... 152

5.7 遞歸... 156

5.7.1 什么是遞歸... 156

5.7.2 遞歸求階乘... 159

5.7.3 漢諾塔... 162

5.7.4 分治法... 165

5.7.5 快速排序... 166

5.8 動態(tài)內(nèi)存管理... 168

5.8.1 malloc. 168

5.8.2 free. 169

5.8.3 內(nèi)存泄漏... 170

5.8.4 申請任意尺寸的內(nèi)存空間... 172

5.8.5 calloc. 175

5.8.6 realloc. 175

5.9 C語言的內(nèi)存布局... 177

5.9.1 代碼段... 179

5.9.2 數(shù)據(jù)段... 180

5.9.3 BSS段... 180

5.9.4 堆... 182

5.9.5 棧... 182

5.10 高級宏定義... 184

5.10.1 不帶參數(shù)的宏定義... 185

5.10.2 帶參數(shù)的宏定義... 186

5.11 內(nèi)聯(lián)函數(shù)... 188

5.12 一些鮮為人知的技巧... 190

5.12.1 #和##. 190

5.12.2 可變參數(shù)... 191

第6章 結(jié)構(gòu)體... 193

視頻講解:205分鐘(12個)鐘

6.1 結(jié)構(gòu)體的聲明和定義... 193

6.1.1 結(jié)構(gòu)體的聲明... 193

6.1.2 結(jié)構(gòu)體的定義... 194

6.1.3 訪問結(jié)構(gòu)體成員... 195

6.1.4 初始化結(jié)構(gòu)體... 197

6.1.5 對齊... 197

6.2 結(jié)構(gòu)體嵌套... 199

6.3 結(jié)構(gòu)體數(shù)組... 200

6.4 結(jié)構(gòu)體指針... 201

6.5 傳遞結(jié)構(gòu)體信息... 203

6.5.1 傳遞結(jié)構(gòu)體變量... 203

6.5.2 傳遞指向結(jié)構(gòu)體變量的指針... 206

6.6 動態(tài)申請結(jié)構(gòu)體... 207

6.7 單鏈表... 212

6.7.1 在單鏈表中插入元素(頭插法)... 214

6.7.2 在單鏈表中插入元素(尾插法)... 216

6.7.3 搜索單鏈表... 218

6.7.4 插入節(jié)點到指定位置... 219

6.7.5 在單鏈表中刪除元素... 223

6.8 內(nèi)存池... 225

6.9 typedef 239

6.9.1 給數(shù)據(jù)類型起別名... 239

6.9.2 結(jié)構(gòu)體的好搭檔... 242

6.9.3 進階typedef 244

6.10 共用體... 249

6.10.1 共用體的聲明... 249

6.10.2 共用體的定義... 252

6.10.3 初始化共用體... 252

6.11 枚舉... 253

6.12 位域... 256

第7章 位操作... 260

視頻講解:26分鐘(2個)鐘

7.1 邏輯位運算符... 261

7.1.1 按位取反... 262

7.1.2 按位與... 262

7.1.3 按位異或... 262

7.1.4 按位或... 263

7.1.5 和賦值號結(jié)合... 263

7.2 移位運算符... 264

7.2.1 左移運算符... 264

7.2.2 右移運算符... 265

7.2.3 和賦值號結(jié)合... 265

7.2.4 一些未定義行為... 266

7.3 應用... 267

7.3.1 掩碼... 267

7.3.2 打開位... 268

7.3.3 關(guān)閉位... 268

7.3.4 轉(zhuǎn)置位... 269

第8章 文件操作... 270

視頻講解:108分鐘(6個)鐘

8.1 文件是什么... 270

8.2 打開和關(guān)閉文件... 271

8.3 順序讀寫文件... 273

8.3.1 讀寫單個字符... 273

8.3.2 讀寫整個字符串... 274

8.3.3 格式化讀寫文件... 277

8.3.4 二進制讀寫文件... 278

8.4 隨機讀寫文件... 281

8.5 標準流... 285

8.5.1 標準輸入、標準輸出和標準錯誤輸出... 285

8.5.2 重定向... 286

8.5.3 錯誤處理... 287

8.6 I/O緩沖區(qū)... 291

附錄A 環(huán)境搭建教程... 294

A.1 安裝VirtualBox虛擬機... 294

A.2 獲取CentOS及版本選擇... 298

A.3 在虛擬機上安裝CentOS. 300

A.4 配置CentOS并安裝GCC編譯器... 310

A.5 安裝圖形界面... 314

A.6 安裝中文輸入法及設置合適的編程字體... 320

A.7 安裝VirtualBox增強工具及共享文件夾設置... 326

A.8 設置VIM編輯器... 330

A.9 Mac OS搭建C語言學習環(huán)境... 332

附錄B VIM快速入門... 334

B.1 使用h、j、k、l來移動光標... 334

B.2 插入模式和退出VIM的方法... 335

B.3 刪除命令、數(shù)字的魔力、撤銷和恢復命令... 336

B.4 粘貼/復制命令、替換命令、替換模式和修改命令... 338

B.5 文件信息、跳轉(zhuǎn)、定位括號和縮進... 339

B.6 搜索命令和替換命令... 341

B.7 執(zhí)行shell命令、文件另存為、合并文件和打開多個文件... 344



查看全部↓

精彩書摘

  當指針指向數(shù)組元素的時候,允許對指針變量進行加減運算,這樣做的意義相當于指向距離指針所在位置向前或向后第n個元素。比如,p+1表示指向p指針指向的元素的下一個元素,p-1則表示指向上一個元素。
  //Chapter4/test5.c
  #include
  int main(void)
  {
  char a[] = "FishC";
  char *p = a;
  printf("*p = %c, *(p+1) = %c, *(p+2) = %c\n", *p, *(p+1), *(p+2));
  return 0;
  }
  程序?qū)崿F(xiàn)如下:
  [fishc@localhost Chapter4]$ gcc test5.c && ./a.out
  *p = F, *(p+1) = i, *(p+2) = s
  對比標準的下標法訪問數(shù)組元素,這種使用指針進行間接訪問的方法稱為指針法。
  p+1的含義并不是簡單地將地址加1,而是指向數(shù)組的下一個元素。
  //Chapter4/test6.c
  #include
  int main(void)
  {
  int b[5] = {1, 2, 3, 4, 5};
  int *p = b;
  printf("p -> %p, p+1 -> %p, p+2 -> %p\n", p, p+1, p+2);
  printf("*p = %d, *(p+1) = %d, *(p+2) = %d\n", *p, *(p+1), *(p+2));
  return 0;
  }
  程序?qū)崿F(xiàn)如下:
  [fishc@localhost Chapter4]$ gcc test6.c && ./a.out
  p -> 0xbf91dcb0, p+1 -> 0xbf91dcb4, p+2 -> 0xbf91dcb8
  *p = 1, *(p+1)= 2, *(p+2)= 3
  ……

查看全部↓

前言/序言

為什么要學習C語言

眾所周知,C語言是最古老的幾門編程語言之一,它至今仍然服務于現(xiàn)代社會。我們來看一下TIOBE排行榜近幾年的數(shù)據(jù)(見圖0-1),TIOBE排行榜是根據(jù)互聯(lián)網(wǎng)上有經(jīng)驗的程序員、學校課程和第三方廠商提供的數(shù)據(jù),并使用搜索引擎(如Google、Bing、Yahoo!、百度)以及Wikipedia、Amazon、YouTube統(tǒng)計出的排名數(shù)據(jù),因此可以準確地反映出某個編程語言的熱門程度。

從圖0-1中可以看到,C語言雖然古老,但卻是“老當益壯”,近幾年仍然常年位居前列。C語言既沒有Java語言的跨平臺能力,又沒有“新潮”的面向?qū)ο蟮木幊趟枷?,也沒有垃圾回收機制……由于C語言的數(shù)組沒有做邊界檢查,導致了緩沖 區(qū)溢出攻擊的盛行。盡管如此,仍然有那么多程序員“鐘情”于C語言,這是為什么呢?

C語言是伴隨著UNIX操作系統(tǒng)的興起而流行的,其語義簡明清晰,功能強大而不臃腫,簡潔而又不過分簡單,實在是工作、學習必備之“良友”。

C語言也是一個比較少見的應用領(lǐng)域極為廣泛的語言。無論是Windows操作系統(tǒng)的API,還是Linux操作系統(tǒng)的API,或者是想給Ruby、Python編寫擴展模塊,C語言形式的函數(shù)定義都幾乎是唯一的選擇。C語言就好像一個中間層或者是“膠水”,如果想把不同編程語言實現(xiàn)的功能模塊混合使用,C語言是最佳的選擇。


零基礎(chǔ)入門學習C語言:帶你學C帶你飛的評論 (共 條)

分享到微博請遵守國家法律
剑阁县| 斗六市| 寻甸| 荆门市| 丹凤县| 闽清县| 玉环县| 东至县| 池州市| 洪雅县| 澜沧| 屏东县| 景洪市| 桃源县| 平乐县| 东宁县| 定结县| 岳阳县| 桐乡市| 京山县| 漳州市| 尚义县| 米泉市| 贵德县| 开鲁县| 板桥市| 莱州市| 麻城市| 郴州市| 冕宁县| 潜江市| 河源市| 竹山县| 鹤岗市| 武定县| 昭通市| 上思县| 金秀| 通城县| 南漳县| 利辛县|