基本介紹
內容簡介,編輯推薦,目錄,
內容簡介
《C指針編程之道》由孔浩、張華傑、陳猛編著,是一本幫助程式設計師提高編程素養的圖書,書中結合開發人員多年的編程經驗和感悟,介紹了指針在數組中的套用、在函式中的套用、指向指針的指針、數據結構中指針的套用,指向檔案類型的指針、指針在C語言算法中的套用、典型迷宮算法實例、C語言和彙編語言的接口、Linux C編程技術簡介、Linux進程與執行緒通信實例、C語言管理系統設計案例、C語言遊戲設計案例等內容。
《C指針編程之道》通過簡單生動的語言和經典的開發實例講解C語言指針套用的方方面面,幫助讀者完全掌握C語言指針的使用細節。
《C指針編程之道》適合大中專院校在校生、畢業生、求職者、編程愛好者學習,同時也可作為想要學習編程的初學者的指導用書。
編輯推薦
C語言指針是一個特殊的變數,其裡面存儲的數值被解釋成為記憶體里的一個地址。讀者在學習指針的時候,一定要理解並且區分指針的4個概念:指針的類型、指針所指向的類型、指針的值(指針所指向的記憶體區)、指針本身所占據的記憶體區。
當然了,讀者理解並掌握了上述的4個概念,只是學好C語言指針的前提。真正要學好指針還要留意很多指針相關的使用細節,細節決定成敗,這些開發使用細節才是決定一個c語言程式優劣的依據。本書將帶領讀者走進這些很容易被忽略的細節中,讓廣大讀者一起來感受“細節決定成敗”的力量。
目錄
第1章 C語言指針
1.1 C語言的靈魂
1.1.1 從這裡開始
1.1.2 知識提示
1.2 相逢在C語言
1.2.1 初識指針——指針變數的定義
1.2.2 學以致用——指針變數的引用
1.2.3 知識提示
1.3 走近指針的日子
1.3.1 方圓世界——指針運算符
1.3.2 玩轉指針——指針操作
1.3.3 知識提示
第2章 指針在數組中的套用
2.1 由內及外——數組在記憶體中的樣子
2.1.1 物以類聚——數組
2.1.2 數組在記憶體中的樣子
2.1.3 知識提示
2.2 自從有了你
2.2.1 數組的左膀——下標
2.2.2 數組的右臂——指針
2.2.3 知識提示
2.3 數組,不止一面
2.3.1 引蛇出洞——數組指針的定義
2.3.2 數組指針的引用
2.3.3 知識提示
2.4 數組元素那點事
2.4.1 這是直觀的世界——數組的下標表示法
2.4.2 數組的另一面——數組的指針表示法
2.4.3 異曲同工——數組的下標與指針
2.4.4 知識提示
2.5 指針集中營——指針數組
2.5.1 戲說指針數組
2.5.2 深度對話——指針數組的引用
2.5.3 知識提示
2.6 聚焦字元串的指針
2.6.1 字元串指針的定義
2.6.2 字元串指針的引用
2.6.3 知識提示
第3章 指針在函式中的套用
3.1 完美的傳遞
3.1.1 指針新用途——指針用做函式參數
3.1.2 說來說去——普通參數與指針參數
3.1.3 知識提示
3.2 函式也有指針
3.2.1 何謂函式的指針
3.2.2 指點江山——指向函式的指針變數
3.2.3 翻來覆去——函式指針與指針函式
3.2.4 知識提示
3.3 我要的是指針,不是寂寞
3.3.1 函式的返回值
3.3.2 這個函式很奇怪——返回指針類型的函式
3.3.3 main函式的返回值
3.3.4 知識提示
第4章 指向指針的指針
4.1 漸行漸進——多維數組
4.1.1 多維數組的定義
4.1.2 指針的指針
4.1.3 當指針遇上多維數組
4.1.4 知識提示
4.2 不能不說的秘密——main函式的秘密
4.2.1 main函式也是函式
4.2.2 野百合也有春天——main函式的參數
4.2.3 知識提示
第5章 數據結構中指針的套用
5.1 程式蝸居——記憶體
5.1.1 鐵打的營盤流水的兵——動態記憶體分配
5.1.2 可持續發展——記憶體的釋放
5.1.3 知識提示
5.2 再說佇列
5.2.1 有頭有尾的佇列
5.2.2 無頭無尾的循環佇列
5.2.3 鏈式佇列
5.2.4 知識提示
5.3 永恆的話題——堆疊
5.3.1 特殊線性表之堆疊
5.3.2 堆疊的存儲結構
5.3.3 知識提示
5.4 順藤摸瓜——鍊表
5.4.1 鍊表種種
5.4.2 尋根問祖——鍊表的建立
5.4.3 鍊表的操作
5.4.4 知識提示
5.5 C世界的樹
5.5.1 C世界的樹是這樣的
5.5.2 “丫”形的二叉樹
5.5.3 今天,你“栽樹”了嗎——二叉樹的創建
5.5.4 一個也不能少——二叉樹的遍歷
5.5.5 知識提示
第6章 指向檔案類型的指針
6.1 動與靜——流和檔案
6.1.1 流動的“流”
6.1.2 靜悄悄的玫瑰——檔案
6.1.3 不得不說——檔案類型指針
6.1.4 知識提示
6.2 進進出出的I/O
6.2.1 getchar()
6.2.2 gets()
6.2.3 scanf()
6.2.4 putchar()
6.2.5 puts()
6.2.6 printf()
6.2.7 知識提示
6.3 檔案加工廠
6.3.1 fopen()
6.3.2 fclose()
6.3.3 fgetc()
6.3.4 fputc()
6.3.5 fgets()
6.3.6 fputs()
6.3.7 fread()
6.3.8 fwrite()
6.3.9 fprintf()
6.3.10 fscanf()
6.3.11 fseek()
6.3.12 rewind()
6.3.13 ftell()
6.3.14 feof()
6.3.15 知識提示
6.4 學以致用
第7章 指針在C語言算法中的套用
7.1 排序雜談
7.1.1 “7”上“8”下——冒泡排序
7.1.2 高效快捷——快速排序
7.1.3 各回各家——直接選擇排序
7.1.4 心隨我動——直接插入排序
7.1.5 好風憑藉力——希爾排序
7.1.6 樹形結合——堆排序
7.1.7 分久必合——歸併排序
7.1.8 排序方法總結
7.1.9 知識提示
7.2 查找
7.2.1 地毯式搜尋——順序查找
7.2.2 事半功倍——折半查找
7.2.3 集中粉碎——分塊查找
7.2.4 知識提示
第8章 典型迷宮算法實例
8.1 迷宮問題
8.1.1 C語言的夢幻家園——迷宮
8.1.2 知識提示
8.2 算法解析
8.2.1 摸著石頭過河——回溯法
8.2.2 用回溯法解迷宮問題
8.2.3 原來迷宮可以這樣走
8.2.4 知識提示
8.3 指針的套用
8.3.1 “迷宮”里的指針
8.3.2 知識提示
第9章 C語言和彙編語言的接口
9.1 不可或缺的保護者——const和volatile
9.1.1 忠誠的衛士——const
9.1.2 不能沒有你——volatile
9.1.3 知識提示
9.2 暫存器變數——register
9.2.1 直接快速的訪問者——register
9.2.2 知識提示
9.3 暫存器的方方面面
9.3.1 縱觀暫存器
9.3.2 暫存器的方方面面
9.3.3 暫存器操作——因“暫存器”而異
9.3.4 知識提示
9.4 C語言與彙編語言混合編程簡介
9.4.1 混編方法
9.4.2 彙編語言與C語言混編的幾點說明
9.4.3 知識提示
9.5 C語言調用彙編語言
9.5.1 融為一體——嵌套彙編代碼
9.5.2 嚴絲縫合——調用彙編子程式
9.5.3 知識提示
9.6 彙編語言調用C語言
9.6.1 彙編語言主程式調用C語言子程式
9.6.2 套用舉例
9.6.3 知識提示
第10章 Linux C編程技術簡介
10.1 Linux系統程式設計基礎
10.1.1 揭開那神秘的面紗——第一個Linux C程式
10.1.2 得力的助手——gcc
10.1.3 糾錯高手——gdb調試器
10.1.4 強力黏合劑——makefile
10.1.5 知識提示
10.2 Linux下的進程控制和進程間通信
10.2.1 Linux進程簡介
10.2.2 Linux進程相關函式
10.2.3 Linux進程間通信
10.2.4 知識提示
10.3 Linux下的執行緒控制
10.3.1 Linux執行緒的概念
10.3.2 Linux執行緒的標識
10.3.3 Linux執行緒的創建
10.3.4 Linux執行緒的終止
10.3.5 Linux執行緒的同步
10.3.6 知識提示
10.4 Linux網路編程技術簡介
10.4.1 TCP/IP協定簡介
10.4.2 套接字編程簡介
10.4.3 基本TCP套接字編程簡介
10.4.4 基本UDP套接字編程簡介
10.4.5 知識提示
第11章 Linux進程與執行緒通信實例
11.1 生產者—消費者問題簡介
11.2 用fork()實現簡單的生產者—消費者功能
11.3 用fork()實現較複雜的生產者—消費者功能
11.4 用clone()實現生產者—消費者的功能
11.4.1 互斥量
11.4.2 信號量
11.4.3 clone系統調用
11.4.4 用clone()、信號量、互斥量實現生產者—消費者功能
11.4.5 知識提示
11.5 用pthread_create()實現生產者—消費者的功能
11.6 畫龍點睛——fork()、clone()、pthread_create() 的綜合比較
第12章 C語言管理系統設計案例
12.1 員工信息管理系統
12.1.1 系統的功能描述
12.1.2 系統的總體設計
12.1.3 詳細設計
12.1.4 知識提示
12.2 停車場管理系統
12.2.1 系統的功能描述
12.2.2 系統的總體設計
12.2.3 系統的詳細設計
12.2.4 知識提示
第13章 C語言遊戲設計案例
13.1 猜字遊戲
13.1.1 遊戲說明
13.1.2 總體設計
13.1.3 詳細設計
13.1.4 知識提示
13.2 撲克遊戲
13.2.1 遊戲說明
13.2.2 總體設計
13.2.3 詳細設計
13.2.4 知識提示