C語言的圖書多如牛毛,但絕大多數(shù)都很單純,無外乎語法、技巧或者實(shí)例。C語言的教與學(xué),遠(yuǎn)不止語法和示例這么簡單。語言是應(yīng)用的工具,只能深入到歷史和實(shí)際應(yīng)用的土壤里,從現(xiàn)實(shí)中尋找這門計(jì)算機(jī)語言的定位,學(xué)習(xí)它的語法,認(rèn)識它所能解決的現(xiàn)實(shí)問題。所以,這本書面向C語言的初學(xué)者,結(jié)合最新的C語言標(biāo)準(zhǔn)9899:2011,不但介紹了和C語言本身有關(guān)的各個(gè)方面:詞法元素、類型、聲明、函數(shù)、表達(dá)式、語句、預(yù)處理、標(biāo)準(zhǔn)庫,更是以此為主線,融匯了大量的現(xiàn)實(shí)和應(yīng)用場景,從計(jì)算機(jī)原理、程序設(shè)計(jì)、編譯原理、操作系統(tǒng)接口、數(shù)據(jù)結(jié)構(gòu),等等。為了幫助讀者更好地理解C語言、操作系統(tǒng)接口以及用C語言解決實(shí)際問題這三者之間的關(guān)系,本書還特意提供了一個(gè)關(guān)系型數(shù)據(jù)庫的實(shí)例和一個(gè)WEB服務(wù)器編程的實(shí)例。本書的目標(biāo):a.基礎(chǔ)。本書面向初學(xué)者,介紹C語言的基礎(chǔ)知識,但有深度和高度;b.全面。依據(jù)C語言的最新標(biāo)準(zhǔn),盡量涵蓋它的所有內(nèi)容;c.標(biāo)準(zhǔn)化。摒棄某些傳統(tǒng)的概念、術(shù)語和不正確、不精確的闡述;d.新穎。正本清源,采用與傳統(tǒng)圖書不同的形式來講解。比如,先介紹#include <stdio.h>是什么東西,怎么來的,有什么用,而不是象別的書一樣,一上來就使用,而且對它的功能語焉不詳。不單單是講述C的語法,更深入到與之相關(guān)的各個(gè)方面,比如操作系統(tǒng)環(huán)境、編譯器、數(shù)據(jù)庫和WEB應(yīng)用,通過各種互相結(jié)合的場景,讓讀者真正認(rèn)識這門語言,真正掌握這門語言,不致于學(xué)了之后還是感到茫然。e.通俗易懂。不是指語言上的通俗化和口語化,而是真正地按照認(rèn)知的規(guī)律和過程,由淺入深,由表及里,不但知其然,還要知其所以然。
李忠,主要出版著作《穿越計(jì)算機(jī)的迷霧》《x86匯編語言:從實(shí)模式到保護(hù)模式》《穿越計(jì)算機(jī)的迷霧(第2版)》。
第1章 從1加到100
1.1 如何從1加到100
1.1.1 標(biāo)準(zhǔn)整數(shù)類型
1.2 相加過程的實(shí)現(xiàn)
1.2.1 左值和左值轉(zhuǎn)換
1.2.2 表達(dá)式的值
1.2.3 運(yùn)算符的優(yōu)先級
1.2.4 運(yùn)算符的結(jié)合性
1.3 源文件
1.3.1 函數(shù)
1.3.2 return語句
1.3.3 main函數(shù)
第2章 程序的翻譯、執(zhí)行和調(diào)試
2.1 C實(shí)現(xiàn)
2.2 程序的翻譯和執(zhí)行
2.3 程序的調(diào)試
2.4 集成開發(fā)環(huán)境
2.5 執(zhí)行環(huán)境
2.6 從1加到N
2.6.1 注釋
2.6.2 函數(shù)調(diào)用和函數(shù)調(diào)用運(yùn)算符
2.6.3 函數(shù)原型
第3章 更多的相加方法
3.1 變量的初始化
3.2 認(rèn)識復(fù)合賦值
3.3 認(rèn)識遞增運(yùn)算符
3.4 初識復(fù)雜的表達(dá)式
3.5 認(rèn)識關(guān)系運(yùn)算符
3.6 求值 50
3.7 認(rèn)識逗號表達(dá)式
3.7.1 全表達(dá)式和序列點(diǎn)
3.8 認(rèn)識表達(dá)式語句
3.9 認(rèn)識遞減和邏輯求反運(yùn)算符
3.10 參數(shù)值的有效性檢查
3.10.1 認(rèn)識if語句
3.10.2 認(rèn)識邏輯或運(yùn)算符
3.10.3 未定義的行為
3.10.4 搖擺的else子句
3.10.5 認(rèn)識邏輯與運(yùn)算符
3.11 認(rèn)識標(biāo)號語句和goto語句
第4章 指針不是指南針
4.1 認(rèn)識一元&和一元*運(yùn)算符
4.2 什么是指針
4.3 指針類型的變量
4.4 指向函數(shù)的指針
4.4.1 函數(shù)指示符—指針轉(zhuǎn)換
4.5 返回指針的函數(shù)
4.6 掌握C語言需要建立類型的觀念
4.6.1 整型常量
4.6.2 整數(shù)—整數(shù)轉(zhuǎn)換
4.6.3 表達(dá)式的類型
4.6.4 認(rèn)識整型轉(zhuǎn)換階和整型提升
4.6.5 指針—整數(shù)轉(zhuǎn)換
4.6.6 指針—指針轉(zhuǎn)換
4.7 指向指針(類型)的指針
第5章 準(zhǔn)備顯示累加結(jié)果
5.1 什么是數(shù)組
5.1.1 數(shù)組變量的聲明
5.1.2 數(shù)組變量的初始化
5.1.3 認(rèn)識sizeof和乘性運(yùn)算符
5.1.4 認(rèn)識變長數(shù)組
5.2 文字和編碼
5.2.1 字符數(shù)組
5.2.2 字符常量
5.2.3 脫轉(zhuǎn)序列
5.2.4 字面串和字符串
5.3 訪問數(shù)組元素
5.3.1 數(shù)組—指針轉(zhuǎn)換
5.3.2 指針運(yùn)算和for語句
5.3.3 下標(biāo)運(yùn)算符
5.3.4 指針的遞增和遞減
5.4 指向數(shù)組的指針
5.5 元素類型為指針的數(shù)組
5.8 將數(shù)字轉(zhuǎn)換為字符串
5.9 元素類型為數(shù)組的數(shù)組
第6章 輸入和輸出
6.1 輸入輸出那點(diǎn)事
6.2 系統(tǒng)調(diào)用
6.3 編譯和鏈接
6.4 庫
6.5 頭文件、預(yù)處理和翻譯單元
6.6 UNIX和類UNIX函數(shù)庫
6.6.1 限定的類型
6.6.2 變參函數(shù)
6.6.3 認(rèn)識逐位或、逐位與和逐位異或運(yùn)算符
6.6.4 指向void的指針
6.6.5 結(jié)構(gòu)類型
6.7 Windows動態(tài)鏈接庫
6.7.1 認(rèn)識成員選擇運(yùn)算符“.”
6.7.2 復(fù)合字面值
6.7.3 控制臺I/O和音頻播放
6.7.4 函數(shù)main的定義
6.8 C標(biāo)準(zhǔn)庫
6.8.1 流
6.8.2 restrict限定的類型
6.8.3 C標(biāo)準(zhǔn)庫的實(shí)現(xiàn)
6.8.4 標(biāo)準(zhǔn)輸入和標(biāo)準(zhǔn)輸出
6.8.5 標(biāo)準(zhǔn)I/O的緩沖區(qū)
6.8.6 直接的輸入輸出
6.8.7 格式化輸出
6.8.8 格式化輸入
6.8.9 格式化輸入輸出的實(shí)例
第7章 字符集和字符編碼
7.1 字符集和字符編碼的演變
7.1.1 GB2312字符集
7.1.2 GBK和GB18030字符集
7.1.3 UNICODE字符集和編碼方案
7.2 多字節(jié)字符和寬字符
7.2.1 源字符集和執(zhí)行字符集
7.2.2 多字節(jié)字符、寬字符和字節(jié)序
7.3 C語言的國際化
7.3.1 條件包含
第8章 歡迎來到類型之家
8.1 擴(kuò)展整數(shù)類型
8.2 布爾類型_Bool
8.3 枚舉類型
8.4 認(rèn)識switch語句
8.5 聯(lián)合類型
8.6 復(fù)數(shù)類型
8.7 限定的類型
8.8 類型的兼容性
8.9 類型轉(zhuǎn)換
8.9.1 實(shí)浮點(diǎn)—整數(shù)轉(zhuǎn)換
8.9.2 實(shí)浮點(diǎn)—實(shí)浮點(diǎn)轉(zhuǎn)換
8.9.3 復(fù)數(shù)—復(fù)數(shù)轉(zhuǎn)換
8.9.4 實(shí)數(shù)—復(fù)數(shù)轉(zhuǎn)換
8.9.5 常規(guī)算術(shù)轉(zhuǎn)換
第9章 作用域、鏈接、線程和存儲期
9.1 標(biāo)識符的作用域
9.1.1 函數(shù)作用域
9.1.2 文件作用域
9.1.3 塊作用域
9.1.4 函數(shù)原型作用域
9.1.5 作用域的重疊
9.1.6 名字空間
9.2 標(biāo)識符的鏈接
9.3 進(jìn)程和線程
9.3.1 創(chuàng)建POSIX線程
9.3.2 線程同步
9.3.3 執(zhí)行時(shí)間的測量
9.4 變量的存儲期
9.4.1 線程存儲期
9.4.2 靜態(tài)存儲期
9.4.3 自動存儲期
9.4.4 指派存儲期
第10章 Windows編程基礎(chǔ)
10.1 如何編寫Windows程序
10.1.1 注冊窗口類
10.1.2 創(chuàng)建窗口
10.1.3 進(jìn)入消息循環(huán)
10.2 窗口過程
10.2.1 函數(shù)調(diào)用約定
10.2.2 消息處理
10.2.3 回調(diào)函數(shù)
10.3 數(shù)據(jù)鏈表
10.3.1 作用域的起始點(diǎn)
10.3.2 動態(tài)內(nèi)存分配
10.4 創(chuàng)建和應(yīng)用所選的字體
10.5 關(guān)閉窗口并退出程序
第11章 遞歸調(diào)用、計(jì)算器和樹
11.1 遞歸的原理
11.2 復(fù)雜計(jì)算器
11.2.1 程序的翻譯過程
11.2.2 算式的語法
11.2.3 詞法分析
11.2.4 函數(shù)指定符_Noreturn
11.2.5 語法分析
11.3 樹和二叉樹
11.4 計(jì)算器的二叉樹版本
11.4.1 非本地跳轉(zhuǎn)(setjmp/longjmp)
第12章 運(yùn)算符和表達(dá)式
12.1 全表達(dá)式
12.2 左值轉(zhuǎn)換
12.3 基本表達(dá)式
12.3.1 泛型選擇
12.4 后綴表達(dá)式
12.4.1 復(fù)合字面值
12.4.2 數(shù)組下標(biāo)
12.4.3 函數(shù)調(diào)用
12.4.4 成員選擇
12.4.5 后綴遞增
12.4.6 后綴遞減
12.5 一元表達(dá)式
12.5.1 前綴遞增
12.5.2 前綴遞減
12.5.3 地址
12.5.4 間接
12.5.5 正號
12.5.6 負(fù)號
12.5.7 逐位取反
12.5.8 邏輯非
12.5.9 尺寸
12.5.10 對齊
12.6 轉(zhuǎn)型表達(dá)式
12.7 乘性表達(dá)式
12.7.1 乘法
12.7.2 除法
12.7.3 取余
12.8 加性表達(dá)式
12.8.1 加法
12.8.2 減法
12.9 移位表達(dá)式
12.9.1 左移
12.9.2 右移
12.10 關(guān)系表達(dá)式
12.11 等性表達(dá)式
12.12 逐位與表達(dá)式
12.13 逐位異或表達(dá)式
12.14 逐位或表達(dá)式
12.15 邏輯與表達(dá)式
12.16 邏輯或表達(dá)式
12.17 條件表達(dá)式
12.18 賦值表達(dá)式
12.18.1 簡單賦值
12.18.2 復(fù)合賦值
12.19 逗號表達(dá)式