《C和指針》提供與C語言編程相關的全面資源和深入討論。《C和指針》通過對指針的基礎知識和高級特性的探討,幫助程序員把指針的強大功能融入到自己的程序中去。
C和指針目錄
第1~10章
第1章 快速上手
1.1 簡介
1.1.1 空白和注釋
1.1.2 預處理指令
1.1.3 main函數
1.1.4 read_column_numbers函數
1.1.5 rearrange函數
1.2 補充說明
1.3 編譯
1.4 總結
第2章 基本概念
2.1 環境
2.1.1 翻譯
2.1.2 執行
2.2 詞法規則
2.2.1 字符
2.2.2 注釋
2.2.3 自由形式的源代碼
2.2.4 標識符
2.2.5 程序的形式
2.3 程序風格
2.4 總結
第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 typedef
3.4 常量
3.5 作用域
3.5.1 代碼塊作用域
3.5.2 文件作用域
3.5.3 原型作用域
3.5.4 函數作用域
3.6 鏈接屬性
3.7 存儲類型
3.8 static關鍵字
3.9 作用域、存儲類型示例
3.10 總結
第4章 語句
4.1 空語句
4.2 表達式語句
4.3 代碼塊
4.4 if語句
4.5 while語句
4.5.1 break和continue語句
4.5.2 while語句的執行過程
4.6 for語句
4.7 do語句
4.8 switch語句
4.8.1 switch中的break語句
4.8.2 default子句
4.8.3 switch語句的執行過程
4.9 goto語句
4.10 總結
第5章 操作符和表達式
5.1 操作符
5.1.1 算術操作符
5.1.2 移位操作符
5.1.3 位操作符
5.1.4 賦值
5.1.5 單目操作符
5.1.6 關系操作符
5.1.7 邏輯操作符
5.1.8 條件操作符
5.1.9 逗號操作符
5.1.10 下標引用、函數調用和結構成員
5.2 布爾值
5.3 左值和右值
5.4 表達式求值
5.4.1 隱式類型轉換
5.4.2 算術轉換
5.4.3 操作符的屬性
5.4.4 優先級和求值的順序
5.5 總結
第6章 指針
6.1 內存和地址
6.2 值和類型
6.3 指針變量的內容
6.4 間接訪問操作符
6.5 未初始化和非法的指針
6.6 NULL指針
6.7 指針、間接訪問和左值
6.8 指針、間接訪問和變量
6.9 指針常量
6.10 指針的指針
6.11 指針表達式
6.12 實例
6.13 指針運算
6.13.1 算術運算
6.13.2 關系運算
6.14 總結
第7章 函數
7.1 函數定義
7.2 函數聲明
7.2.1 原型
7.2.2 函數的缺省認定
7.3 函數的參數
7.4 ADT和黑盒
7.5 遞歸
7.5.1 追蹤遞歸函數
7.5.2 遞歸與迭代
7.6 可變參數列表
7.6.1 stdarg宏
7.6.2 可變參數的限制
7.7 總結
第8章 數組
8.1 一維數組
8.1.1 數組名
8.1.2 下標引用
8.1.3 指針與下標
8.1.4 指針的效率
8.1.5 數組和指針
8.1.6 作為函數參數的數組名
8.1.7 聲明數組參數
8.1.8 初始化
8.1.9 不完整的初始化
8.1.10 自動計算數組長度
8.1.11 字符數組的初始化
8.2 多維數組
8.2.1 存儲順序
8.2.2 數組名
8.2.3 下標
8.2.4 指向數組的指針
8.2.5 作為函數參數的多維數組
8.2.6 初始化
8.2.7 數組長度自動計算
8.3 指針數組
8.4 總結
第9章 字符串、字符和字節
9.1 字符串基礎
9.2 字符串長度
9.3 不受限制的字符串函數
9.3.1 復制字符串
9.3.2 連接字符串
9.3.3 函數的返回值
9.3.4 字符串比較
9.4 長度受限的字符串函數
9.5 字符串查找基礎
9.5.1 查找一個字符
9.5.2 查找任何幾個字符
9.5.3 查找一個子串
9.6 高級字符串查找
9.6.1 查找一個字符串前綴
9.6.2 查找標記
9.7 錯誤信息
9.8 字符操作
9.8.1 字符分類
9.8.2 字符轉換
9.9 內存操作
9.10 總結
第10章 結構和聯合
10.1 結構基礎知識
10.1.1 結構聲明
10.1.2 結構成員
10.1.3 結構成員的直接訪問
10.1.4 結構成員的間接訪問
10.1.5 結構的自引用
10.1.6 不完整的聲明
10.1.7 結構的初始化
10.2 結構、指針和成員
10.2.1 訪問指針
10.2.2 訪問結構
10.2.3 訪問結構成員
10.2.4 訪問嵌套的結構
10.2.5 訪問指針成員
10.3 結構的存儲分配
10.4 作為函數參數的結構
10.5 位段
10.6 聯合
10.6.1 變體記錄
10.6.2 聯合的初始化
10.7 總結
第11~18章
第11章 動態內存分配
11.1 為什么使用動態內存分配
11.2 malloc和free
11.3 calloc和realloc
11.4 使用動態分配的內存
11.5 常見的動態內存錯誤
11.6 內存分配實例
11.7 總結
第12章 使用結構和指針
12.1 鏈表
12.2 單鏈表
12.2.1 在單鏈表中插入
12.2.2 其他鏈表操作
12.3 雙鏈表
12.3.1 在雙鏈表中插入
12.3.2 其他鏈表操作
12.4 總結
第13章 高級指針話題
13.1 進一步探討指向指針的指針
13.2 高級聲明
13.3 函數指針
13.3.1 回調函數
13.3.2 轉移表
13.4 命令行參數
13.4.1 傳遞命令行參數
13.4.2 處理命令行參數
13.5 字符串常量
13.6 總結
第14章 預處理器
14.1 預定義符號
14.2 #define
14.2.1 宏
14.2.2 #define替換
14.2.3 宏與函數
14.2.4 帶副作用的宏參數
14.2.5 命名約定
14.2.6 #undef
14.2.7 命令行定義
14.3 條件編譯
14.3.1 是否被定義
14.3.2 嵌套指令
14.4 文件包含
14.4.1 函數庫文件包含
14.4.2 本地文件包含
14.4.3 嵌套文件包含
14.5 其他指令
14.6 總結
第15章 輸入/輸出函數
15.1 錯誤報告
15.2 終止執行
15.3 標準I/O函數庫
15.4 ANSI I/O概念
15.4.1 流
15.4.2 文件
15.4.3 標準I/O常量
15.5 流I/O總覽
15.6 打開流
15.7 關閉流
15.8 字符I/O
15.8.1 字符I/O宏
15.8.2 撤銷字符I/O
15.9 未格式化的行I/O
15.10 格式化的行I/O
15.10.1 scanf家族
15.10.2 scanf格式代碼
15.10.3 printf家族
15.10.4 printf格式代碼
15.11 二進制I/O
15.12 刷新和定位函數
15.13 改變緩沖方式
15.14 流錯誤函數
15.15 臨時文件
15.16 文件操縱函數
15.17 總結
第16章 標準函數庫
16.1 整型函數
16.1.1 算術
16.1.2 隨機數
16.1.3 字符串轉換
16.2 浮點型函數
16.2.1 三角函數
16.2.2 雙曲函數
16.2.3 對數和指數函數
16.2.4 浮點表示形式
16.2.5 冪
16.2.6 底數、頂數、絕對值和余數
16.2.7 字符串轉換
16.3 日期和時間函數
16.3.1 處理器時間
16.3.2 當天時間
16.4 非本地跳轉
16.4.1 實例
16.4.2 何時使用非本地跳轉
16.5 信號
16.5.1 信號名
16.5.2 處理信號
16.5.3 信號處理函數
16.6 打印可變參數列表
16.7 執行環境
16.7.1 終止執行
16.7.2 斷言
16.7.3 環境
16.7.4 執行系統命令
16.7.5 排序和查找
16.8 locale
16.8.1 數值和貨幣格式
16.8.2 字符串和locale
16.8.3 改變locale的效果
16.9 總結
第17章 經典抽象數據類型
17.1 內存分配
17.2 堆棧
17.2.1 堆棧接口
17.2.2 實現堆棧
17.3 隊列
17.3.1 隊列接口
17.3.2 實現隊列
17.4 樹
17.4.1 在二叉搜索樹中插入
17.4.2 從二叉搜索樹刪除節點
17.4.3 在二叉搜索樹中查找
17.4.4 樹的遍歷
17.4.5 二叉搜索樹接口
17.4.6 實現二叉搜索樹
17.5 實現的改進
17.5.1 擁有超過一個的堆棧
17.5.2 擁有超過一種的類型
17.5.3 名字沖突
17.5.4 標準函數庫的ADT
17.6 總結
第18章 運行時環境
18.1 判斷運行時環境
18.1.1 測試程序
18.1.2 靜態變量和初始化
18.1.3 堆棧幀
18.1.4 寄存器變量
18.1.5 外部標識符的長度
18.1.6 判斷堆棧幀布局
18.1.7 表達式的副作用
18.2 C和匯編語言的接口
18.3 運行時效率
18.4 總結
- PC官方版
- 安卓官方手機版
- IOS官方手機版