-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
3/26 新書到! 3/19 新書到! 3/14 新書到! 12/12 新書到!
購書流程Q & A站務留言版客服信箱
3ds MaxMayaRhinoAfter EffectsSketchUpZBrushPainterUnity
PhotoShopAutoCadMasterCamSolidWorksCreoUGRevitNuke
C#CC++Java遊戲程式Linux嵌入式PLCFPGAMatlab
駭客資料庫搜索引擎影像處理FluentVR+ARANSYS深度學習
單晶片AVROpenGLArduinoRaspberry Pi電路設計CadenceProtel
HadoopPythonStm32CortexLabview手機程式AndroidiPhone
可查書名,作者,ISBN,3dwoo書號
詳細書籍分類

C語言非常道

( 簡體 字)
作者:李忠類別:1. -> 程式設計 -> C -> C
譯者:
出版社:電子工業出版社C語言非常道 3dWoo書號: 51054
詢問書籍請說出此書號!

缺書
NT售價: 640

出版日:4/1/2019
頁數:512
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 版 )
加入購物車 加到我的最愛
(請先登入會員)
ISBN:9787121361838
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證)
作者序:

譯者序:

前言:

毋庸置疑,C是非常流行的編程語言。正是因為流行,和它有關的圖書之多,可以用多如牛毛、汗牛充棟來形容。
既然都已經這么多了,那我為什么還要再來一本,給牛增加負擔呢?原因很簡單:想看看是否能用一種和別人不同的方法來把C語言講清楚。這本書面向初學者,但是,已經學過C語言的人也不妨讀一讀,因為我的講解方法和對很多問題的闡述和別人不一樣。請放心,我們不胡來,C語言有自己的標準,我們始終按標準來解釋一切。當然,自負是人類的共性,這本書是否真的能把C語言講清楚,還得靠讀者來檢驗。
C語言難學嗎?來自這個行業的聲音始終自相矛盾。一方面,很多過來人聲稱C語言其實很簡單;另一方面,很多初學者覺得很難,不得其門而入。僅就語法而言,C語言確實比較簡單。但是,這種簡單性使得很多人對它的掌握只停留在似是而非的表面上。似是而非的學習一開始很輕松,但你走不遠。實際上,即使是聲稱已經掌握了這門編程語言的人,對很多語法要素的認識和理解也是錯誤的,在書寫稍微復雜一些的代碼時,也發現自己突然變得糊涂起來。
那么,學習C語言的訣竅在哪里呢?
首先,掌握它的類型系統并學會以類型的觀點來構造和解析程序中的代碼,這樣你就不會迷路。如果你沒有掌握C語言的類型系統,不會從類型的角度來分析一個表達式,說明你并沒有掌握C語言。
其次,你要了解C語言在整個計算機系統中的位置,知道它和操作系統或者硬件之間的關系;尤其是要理解庫和C語言的關系,要明白是庫拓展了C語言的實用性。除了C語言本身的簡潔、優美和強大的表達能力外,C標準庫和其他形形色色的庫也是C語言變得流行并威力無窮的重要因素。
寫一本編程語言的通俗入門教材,最痛苦的莫過于你不能一下子展現事物的全貌和眾多細節。盡管你知道它,也渴望表達,然而毫不客氣地說,讀者們并不需要它。讀者不了解原委,沒有耐心,記不住,而且恐懼。為此,本書力求在以下幾個方面做一些突破:
首先,C語言的知識點是網狀的,是互相牽扯和交叉的,如果不加以梳理,隨著閱讀的深入,讀者不理解的概念和術語將越來越多,從而產生挫敗感。為了克服這一問題,我們把它變成線性的,還沒講到的內容一概不提,沒講過的概念一概不用;講過了,有印象了,掌握了,再用來解釋新的知識。
其次,對于一本C語言的圖書或者教材來說,最怕的是陷于細節而無法自拔,這往往會使讀者成為語法機器而不能領略C語言的全貌,不知道C語言到底有什么實際的用處,更不知道哪些知識才是最重要的。
因此,在內容的組織上,這本書的宗旨是先觀其大略,而不是一上來就究其細節。如果只是陳列各種語法元素及其細節,我們可能需要寫幾百上千頁,各種示例和習題堆砌其中。學生學完了,習題也做完了,還是莫名其妙,不知道C語言到底在整個計算機體系結構中處于什么位置,它和操作系統的關系是什么,也不知道為什么別人的程序可以播放音樂、處理圖片、過濾網絡數據包,而自己的程序只能打印哪些學生的成績高于60分。
第三,考慮到類型系統的重要性,從本書一開始就逐漸強化類型的知識和基于類型的語法分析。這是掌握C語言的關鍵,不可等閑視之。
第四,多數教材和圖書都從一個令初學者抓狂的語句
printf ("hello world");
開始,其理由是初學者可以馬上看到“成果”,增加他們的學習興趣。然而,除非是面向有編程經驗的讀者,否則這樣做可能弊多利少。一方面,printf只是一個普通的輸入輸出函數,而且并不是C語言的組成部分,但初學者可能會先入為主地認為它就是C語言里的大梁;另一方面,這個函數并不是它表面上看起來的那樣簡單,實際上涉及多個知識點和概念,而且無法在一本書的開始部分完全展開。對于初學者來說,從一開始就將他們引入一個迷局可能并不值得。
考慮到這些,本書一反常態,將輸入輸出留到第6章單獨講述。在此之前,我們用調試軟件來跟蹤程序的執行過程并觀察執行結果。事實上,程序調試是非常重要的技能,所以本書這樣安排應該是科學的。
第五,本書有一章是專門介紹Windows編程的,雖然如走馬觀花一樣簡單,也會令某些讀者質疑,畢竟C語言無關具體的硬件和操作系統平臺。之所以這樣安排,主要的目的是讓讀者領略C語言是如何在具體的平臺上發揮作用的,以及庫在這個過程中所起到的作用和扮演的角色,并從一個側面解答C語言到底有什么用的問題。盡管C語言不依賴于平臺,但用C語言寫出來的程序卻需要在具體的平臺上執行。
第六,本書引入了很多概念和術語,但在正文中夾雜這些術語的英文拼寫可能會對部分讀者造成閱讀障礙。考慮到這一點,我們在每一章的前面用思維導圖單獨列出,這樣做的另一個好處是可以讓讀者清楚地知道本章中都講了哪些內容。
第七,這本書開篇沒有講C語言的由來、歷史、優點和應用領域,通常來說,這是一本C語言教材的格式化組成部分。但考慮到別的書都已經講了,網絡上也到處都有,所以我就沒必要再?唆了,請大家不要見怪。
最后,這不是一本類似于辭典或者語法參考手冊之類的書,內容的組織具有漸進和逐步展開的特點,應該從第1章開始順序閱讀。在內容的組織上,本書前半部分以如何實現輸入輸出為主線:第1章引入C語言編程的基本概念和要素;第2章講解程序的調試;第3章快速介紹C語言里的大部分表達式和語句類型;第4和第5章介紹指針和數組,為輸入輸出做最后的鋪墊;第6章完整介紹輸入輸出。在積累了相當的知識和經驗后,本書后半部分以如何實現漢字的處理(第7章)、如何編寫Windows程序以及編寫一個復雜計算器為主線(第8、9、10、11章),繼續講解C語言的語法。為方便起見,第12章詳細介紹了C語言里的每一種表達式。
在學習這門編程語言之前,必須先了解計算機的工作原理,有使用計算機的經驗。對于大學新生來說,我并不擔心這一點,學校自有他們的教學計劃和進度安排;對于自學這門編程語言的人來說,這是需要注意的。
紙質書的內容承載力有限,為了幫助大家更好地使用本書和理解書中的內容,我會準備一些輔助的學習資料,比如導讀和習題解析之類的文檔,它們都存放在我的個人網站上,網站的地址就在下面。當然,如果你有什么意見和建議,也可以在網站上留言,或者通過下面的電子郵件地址與我聯系。
在即將出版之前,編輯同學希望我能在前言里提一提我以前寫過的書。說白了,就是要做做廣告。我當時就大義凜然地一口回絕:“此事決不可為!謙虛謹慎乃做人之根本,休想讓朕把寫過《穿越計算機的迷霧(第2版)》和《x86匯編語言:從實模式到保護模式》這兩本書的事說出來!”
王曉波和李雙圓參與了本書的寫作,我們在此共同祝愿讀者們閱讀愉快,早日通過本書掌握C語言的精髓。
內容簡介:

C語言的圖書多如牛毛,但絕大多數都很單純,無外乎語法、技巧或者實例。C語言的教與學,遠不止語法和示例這么簡單。語言是應用的工具,只能深入到歷史和實際應用的土壤里,從現實中尋找這門計算機語言的定位,學習它的語法,認識它所能解決的現實問題。所以,這本書面向C語言的初學者,結合最新的C語言標準9899:2011,不但介紹了和C語言本身有關的各個方面:詞法元素、類型、聲明、函數、表達式、語句、預處理、標準庫,更是以此為主線,融匯了大量的現實和應用場景,從計算機原理、程序設計、編譯原理、操作系統接口、數據結構,等等。為了幫助讀者更好地理解C語言、操作系統接口以及用C語言解決實際問題這三者之間的關系,本書還特意提供了一個關系型數據庫的實例和一個WEB服務器編程的實例。本書的目標:a.基礎。本書面向初學者,介紹C語言的基礎知識,但有深度和高度;b.全面。依據C語言的最新標準,盡量涵蓋它的所有內容;c.標準化。摒棄某些傳統的概念、術語和不正確、不精確的闡述;d.新穎。正本清源,采用與傳統圖書不同的形式來講解。比如,先介紹#include <stdio.h>是什么東西,怎么來的,有什么用,而不是象別的書一樣,一上來就使用,而且對它的功能語焉不詳。不單單是講述C的語法,更深入到與之相關的各個方面,比如操作系統環境、編譯器、數據庫和WEB應用,通過各種互相結合的場景,讓讀者真正認識這門語言,真正掌握這門語言,不致于學了之后還是感到茫然。e.通俗易懂。不是指語言上的通俗化和口語化,而是真正地按照認知的規律和過程,由淺入深,由表及里,不但知其然,還要知其所以然。
目錄:

第1章 從1加到100
1.1 如何從1加到100
1.1.1 標準整數類型
1.2 相加過程的實現
1.2.1 左值和左值轉換
1.2.2 表達式的值
1.2.3 運算符的優先級
1.2.4 運算符的結合性
1.3 源文件
1.3.1 函數
1.3.2 return語句
1.3.3 main函數
第2章 程序的翻譯、執行和調試
2.1 C實現
2.2 程序的翻譯和執行
2.3 程序的調試
2.4 集成開發環境
2.5 執行環境
2.6 從1加到N
2.6.1 注釋
2.6.2 函數調用和函數調用運算符
2.6.3 函數原型
第3章 更多的相加方法
3.1 變量的初始化
3.2 認識復合賦值
3.3 認識遞增運算符
3.4 初識復雜的表達式
3.5 認識關系運算符
3.6 求值 50
3.7 認識逗號表達式
3.7.1 全表達式和序列點
3.8 認識表達式語句
3.9 認識遞減和邏輯求反運算符
3.10 參數值的有效性檢查
3.10.1 認識if語句
3.10.2 認識邏輯或運算符
3.10.3 未定義的行為
3.10.4 搖擺的else子句
3.10.5 認識邏輯與運算符
3.11 認識標號語句和goto語句
第4章 指針不是指南針
4.1 認識一元&和一元*運算符
4.2 什么是指針
4.3 指針類型的變量
4.4 指向函數的指針
4.4.1 函數指示符—指針轉換
4.5 返回指針的函數
4.6 掌握C語言需要建立類型的觀念
4.6.1 整型常量
4.6.2 整數—整數轉換
4.6.3 表達式的類型
4.6.4 認識整型轉換階和整型提升
4.6.5 指針—整數轉換
4.6.6 指針—指針轉換
4.7 指向指針(類型)的指針
第5章 準備顯示累加結果
5.1 什么是數組
5.1.1 數組變量的聲明
5.1.2 數組變量的初始化
5.1.3 認識sizeof和乘性運算符
5.1.4 認識變長數組
5.2 文字和編碼
5.2.1 字符數組
5.2.2 字符常量
5.2.3 脫轉序列
5.2.4 字面串和字符串
5.3 訪問數組元素
5.3.1 數組—指針轉換
5.3.2 指針運算和for語句
5.3.3 下標運算符
5.3.4 指針的遞增和遞減
5.4 指向數組的指針
5.5 元素類型為指針的數組
5.8 將數字轉換為字符串
5.9 元素類型為數組的數組
第6章 輸入和輸出
6.1 輸入輸出那點事
6.2 系統調用
6.3 編譯和鏈接
6.4 庫
6.5 頭文件、預處理和翻譯單元
6.6 UNIX和類UNIX函數庫
6.6.1 限定的類型
6.6.2 變參函數
6.6.3 認識逐位或、逐位與和逐位異或運算符
6.6.4 指向void的指針
6.6.5 結構類型
6.7 Windows動態鏈接庫
6.7.1 認識成員選擇運算符“.”
6.7.2 復合字面值
6.7.3 控制臺I/O和音頻播放
6.7.4 函數main的定義
6.8 C標準庫
6.8.1 流
6.8.2 restrict限定的類型
6.8.3 C標準庫的實現
6.8.4 標準輸入和標準輸出
6.8.5 標準I/O的緩沖區
6.8.6 直接的輸入輸出
6.8.7 格式化輸出
6.8.8 格式化輸入
6.8.9 格式化輸入輸出的實例
第7章 字符集和字符編碼
7.1 字符集和字符編碼的演變
7.1.1 GB2312字符集
7.1.2 GBK和GB18030字符集
7.1.3 UNICODE字符集和編碼方案
7.2 多字節字符和寬字符
7.2.1 源字符集和執行字符集
7.2.2 多字節字符、寬字符和字節序
7.3 C語言的國際化
7.3.1 條件包含
第8章 歡迎來到類型之家
8.1 擴展整數類型
8.2 布爾類型_Bool
8.3 枚舉類型
8.4 認識switch語句
8.5 聯合類型
8.6 復數類型
8.7 限定的類型
8.8 類型的兼容性
8.9 類型轉換
8.9.1 實浮點—整數轉換
8.9.2 實浮點—實浮點轉換
8.9.3 復數—復數轉換
8.9.4 實數—復數轉換
8.9.5 常規算術轉換
第9章 作用域、鏈接、線程和存儲期
9.1 標識符的作用域
9.1.1 函數作用域
9.1.2 文件作用域
9.1.3 塊作用域
9.1.4 函數原型作用域
9.1.5 作用域的重疊
9.1.6 名字空間
9.2 標識符的鏈接
9.3 進程和線程
9.3.1 創建POSIX線程
9.3.2 線程同步
9.3.3 執行時間的測量
9.4 變量的存儲期
9.4.1 線程存儲期
9.4.2 靜態存儲期
9.4.3 自動存儲期
9.4.4 指派存儲期
第10章 Windows編程基礎
10.1 如何編寫Windows程序
10.1.1 注冊窗口類
10.1.2 創建窗口
10.1.3 進入消息循環
10.2 窗口過程
10.2.1 函數調用約定
10.2.2 消息處理
10.2.3 回調函數
10.3 數據鏈表
10.3.1 作用域的起始點
10.3.2 動態內存分配
10.4 創建和應用所選的字體
10.5 關閉窗口并退出程序
第11章 遞歸調用、計算器和樹
11.1 遞歸的原理
11.2 復雜計算器
11.2.1 程序的翻譯過程
11.2.2 算式的語法
11.2.3 詞法分析
11.2.4 函數指定符_Noreturn
11.2.5 語法分析
11.3 樹和二叉樹
11.4 計算器的二叉樹版本
11.4.1 非本地跳轉(setjmp/longjmp)
第12章 運算符和表達式
12.1 全表達式
12.2 左值轉換
12.3 基本表達式
12.3.1 泛型選擇
12.4 后綴表達式
12.4.1 復合字面值
12.4.2 數組下標
12.4.3 函數調用
12.4.4 成員選擇
12.4.5 后綴遞增
12.4.6 后綴遞減
12.5 一元表達式
12.5.1 前綴遞增
12.5.2 前綴遞減
12.5.3 地址
12.5.4 間接
12.5.5 正號
12.5.6 負號
12.5.7 逐位取反
12.5.8 邏輯非
12.5.9 尺寸
12.5.10 對齊
12.6 轉型表達式
12.7 乘性表達式
12.7.1 乘法
12.7.2 除法
12.7.3 取余
12.8 加性表達式
12.8.1 加法
12.8.2 減法
12.9 移位表達式
12.9.1 左移
12.9.2 右移
12.10 關系表達式
12.11 等性表達式
12.12 逐位與表達式
12.13 逐位異或表達式
12.14 逐位或表達式
12.15 邏輯與表達式
12.16 邏輯或表達式
12.17 條件表達式
12.18 賦值表達式
12.18.1 簡單賦值
12.18.2 復合賦值
12.19 逗號表達式
序: