出版時(shí)間:2012-7 出版社:機(jī)械工業(yè)出版社 作者:牟海軍 頁數(shù):347
Tag標(biāo)簽:無
前言
為什么要寫這本書 或許絕大多數(shù)人都有這樣的經(jīng)歷,最初學(xué)習(xí)C語言的目的是為了應(yīng)付考試,所以對(duì)于C語言只能算是一知半解。真正運(yùn)用C語言進(jìn)行編程時(shí)會(huì)出現(xiàn)很多問題,讓人措手不及,這時(shí)才發(fā)現(xiàn)自己只能理解C語言的皮毛,雖能看懂簡(jiǎn)單的代碼,卻寫不出程序來,對(duì)于那些稍微復(fù)雜的代碼就更是望塵莫及了。 為了擺脫對(duì)C語言知其然不知其所以然的狀態(tài),本書將帶領(lǐng)讀者重啟C語言學(xué)習(xí)之旅,這次不再是為了考試,而是出于真正的使用需要,所以有針對(duì)性地給出了C語言學(xué)習(xí)中的重點(diǎn)、難點(diǎn)與疑點(diǎn)解析,希望能夠幫助更多的C語言愛好者走出困境,真正理解C語言,真正做到學(xué)以致用。 為了讓讀者能夠真正地理解C語言學(xué)習(xí)中的重點(diǎn)、難點(diǎn)與疑點(diǎn),以及體現(xiàn)本書學(xué)以致用的特色,全書沒有采用枯燥的文字描述來講解C語言相關(guān)的知識(shí)點(diǎn),而是采用知識(shí)點(diǎn)與代碼結(jié)合的方式,同時(shí)對(duì)于代碼展開相應(yīng)的分析,這就避免了部分讀者在學(xué)習(xí)了相關(guān)知識(shí)點(diǎn)之后仍然不知道如何使用該知識(shí)點(diǎn)的弊端,使讀者可以通過代碼來加深對(duì)相關(guān)知識(shí)點(diǎn)的理解?! ∪珪诮Y(jié)構(gòu)安排上都是圍繞C語言學(xué)習(xí)中的重點(diǎn)、難點(diǎn)與疑點(diǎn)進(jìn)行講解,如第1章并沒有從講解C語言中的基礎(chǔ)知識(shí)點(diǎn)開始,而是先列舉了C語言學(xué)習(xí)中易混淆的核心概念,使讀者清晰地區(qū)分這些核心概念后再開始相應(yīng)知識(shí)點(diǎn)的學(xué)習(xí)。本書對(duì)基礎(chǔ)知識(shí)點(diǎn)也并非概念性地講解,而是重點(diǎn)講解了使用中的要點(diǎn),同時(shí)重點(diǎn)講解了C語言中的一些調(diào)試和異常處理的方法,以及誤區(qū)和陷阱知識(shí)點(diǎn)。最后一章講解了編程中必須掌握的一些常用算法??傊緯軌蚴棺x者在現(xiàn)有基礎(chǔ)上進(jìn)一步提高自己的C語言編程能力,更清晰地認(rèn)識(shí)和理解C語言。 本書讀者對(duì)象 本書適合以下讀者: C語言愛好者 嵌入式開發(fā)人員 初、中級(jí)C語言程序員 參加C語言培訓(xùn)的學(xué)員 如何閱讀本書 本書共11章,第1章主要針對(duì)C語言學(xué)習(xí)中一些容易混淆的核心概念進(jìn)行具體講解,內(nèi)容跨度比較大,初學(xué)者學(xué)起來可能有些吃力,所以建議在遇到不懂的知識(shí)點(diǎn)時(shí)暫時(shí)跳過,待學(xué)習(xí)了后面的相關(guān)知識(shí)點(diǎn)后再進(jìn)行相應(yīng)的學(xué)習(xí);第2~8章有針對(duì)性地講解了C語言中的相應(yīng)知識(shí)點(diǎn),同時(shí)有針對(duì)性地對(duì)其中的要點(diǎn)部分進(jìn)行具體講解,讀者可以通過這幾章的學(xué)習(xí)夯實(shí)每個(gè)知識(shí)點(diǎn)的基礎(chǔ);第9章重點(diǎn)講解了在C語言編程中進(jìn)行調(diào)試和異常處理的一些常見方法和技巧;第10章重點(diǎn)講解了C語言編程中的一些陷阱知識(shí)點(diǎn),通過本章的學(xué)習(xí)讀者可以知道如何在以后編程時(shí)繞開陷阱;第11章講解了一些編程中的常用算法,這是編程中必然會(huì)遇到的,因此讀者有必要掌握這些常見的算法?! ∽詈笤诟戒洸糠纸o出了養(yǎng)成良好編程習(xí)慣的建議。本書針對(duì)每個(gè)知識(shí)點(diǎn)都提供了相應(yīng)的代碼,建議讀者在學(xué)習(xí)的過程中自己動(dòng)手編寫,這樣才會(huì)發(fā)現(xiàn)自己在C語言學(xué)習(xí)方面的缺陷,進(jìn)而快速提升自己的編程能力。 勘誤和支持 除署名作者外,參與本書材料整理和代碼測(cè)試工作的還有項(xiàng)俊、馬曉路、劉倩、羅艷、胡開云、余路、張濤、張曉詠、時(shí)翔、秦螢雪等。由于作者的水平有限,書中難免會(huì)出現(xiàn)一些錯(cuò)誤或者不準(zhǔn)確的地方,懇請(qǐng)讀者批評(píng)指正。書中的全部源文件除可以從華章網(wǎng)站下載外,還可以發(fā)郵件向我索取。如果你有更多的寶貴意見,也歡迎發(fā)郵件與我交流,期待得到你們的真摯反饋?! ≈轮x 本書得以出版要感謝很多人,首先要感謝我的導(dǎo)師侯建華教授,無論是在科研還是平時(shí)的學(xué)習(xí)和生活中,都得到您嚴(yán)格的指導(dǎo)和無微不至的關(guān)懷,在此向您表示最真誠的敬意和衷心的感謝! 其次要感謝我的好朋友們,他們是劉倩、馬曉路、胡開云、時(shí)翔、張曉詠、余路、張濤,有你們的陪伴,我每天都過得很開心,感謝你們?cè)谏钪薪o予我的關(guān)心和體貼。同時(shí)也感謝實(shí)驗(yàn)室的項(xiàng)俊、梁娟、左堅(jiān)、羅艷、嚴(yán)明君、李思,謝謝你們平時(shí)給予的幫助?! 「兄x機(jī)械工業(yè)出版社華章公司的編輯楊福川和姜影,你們?cè)谶@一年多的時(shí)間中始終支持我的寫作,你們的鼓勵(lì)和幫助指引我順利地完成全部書稿。 最后要感謝我的家人,沒有你們的鼓勵(lì)和支持,就沒有我今天的成績(jī)。在此要特別感謝我的父親,您多年來對(duì)我的悉心教導(dǎo),我都銘記在心?! ≈?jǐn)以此書獻(xiàn)給眾多熱愛C語言的朋友們! 牟海軍(bigloomy) 2012年4月于中國(guó)武漢
內(nèi)容概要
C語言是編程語言中的一朵奇葩,雖已垂垂老矣,但卻屹立不倒,誕生了數(shù)十年,仍然是最流行的編程語言之一。C語言看似簡(jiǎn)單,卻不易吃透,想要運(yùn)用好,更是需要積淀?!禖語言進(jìn)階:重點(diǎn)、難點(diǎn)與疑點(diǎn)解析》是一本修煉C程序設(shè)計(jì)能力的進(jìn)階之作,它沒有系統(tǒng)地去講解C語言的語法和編程方法,而是只對(duì)C語言中不容易被初學(xué)者理解的重點(diǎn)、難點(diǎn)和疑點(diǎn)進(jìn)行了細(xì)致而深入的解讀,同時(shí)包含大量技巧和最佳實(shí)踐,揭露了C語言中那些鮮為普通開發(fā)者所知的秘密,旨在讓讀者真正掌握C語言,從而編寫出更高質(zhì)量的C程序代碼。
全書一共11章:第1章重點(diǎn)闡述了C語言中不易被理解的多個(gè)核心概念,很多初學(xué)者在理解這些概念時(shí)都會(huì)存在誤區(qū);第2-8章對(duì)預(yù)處理、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)的程序設(shè)計(jì)、數(shù)組、指針、數(shù)據(jù)結(jié)構(gòu)、函數(shù)和文件等知識(shí)點(diǎn)的核心問題和注意事項(xiàng)進(jìn)行了講解;第9章介紹了調(diào)試和異常處理的方法及注意事項(xiàng);第10章對(duì)C語言中的若干容易讓開發(fā)者誤解誤用的陷阱知識(shí)點(diǎn)進(jìn)行了剖析;第11章則對(duì)所有程序員必須掌握的幾種算法進(jìn)行了詳細(xì)的講解;附錄經(jīng)驗(yàn)性地總結(jié)了如何養(yǎng)成良好的編碼習(xí)慣,這對(duì)所有開發(fā)者都尤為重要。
作者簡(jiǎn)介
牟海軍,資深C語言開發(fā)工程師,鐘愛C語言,對(duì)C語言有較深入的理解和研究,實(shí)踐經(jīng)驗(yàn)較為豐富。喜歡研究算法,諳熟各種常見和經(jīng)典的算法,頗有心得。擅長(zhǎng)嵌入式linux開發(fā),以及使用QT進(jìn)行嵌入式開發(fā)。活躍于CSDN等技術(shù)社區(qū),是CSDN的推薦博客專家。
書籍目錄
前言
第1章 必須厘清的核心概念
1.1 堆棧
1.2 全局變量和局部變量
1.3 生存期和作用域
1.3.1 生存期
1.3.2 作用域
1.4 內(nèi)部函數(shù)和外部函數(shù)
1.5 指針變量
1.6 指針數(shù)組和數(shù)組指針
1.7 指針函數(shù)和函數(shù)指針
1.8 傳值和傳址
1.9 遞歸和嵌套
1.10 結(jié)構(gòu)體
1.11 共用體
1.12 枚舉
1.13 位域
第2章 預(yù)處理
2.1 文件的包含方式
2.2 宏定義
2.2.1 簡(jiǎn)單宏替換
2.2.2 帶參數(shù)的宏替換
2.2.3 嵌套宏替換
2.3 宏定義常見錯(cuò)誤解析
2.3.1 不帶參數(shù)的宏
2.3.2 帶參數(shù)的宏
2.4 條件編譯指令的使用
2.5 #pragma指令的使用
第3章 選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)的程序設(shè)計(jì)
3.1 if語句及其易錯(cuò)點(diǎn)解析
3.2 條件表達(dá)式的使用
3.3 switch語句的使用及注意事項(xiàng)
3.4 goto語句的使用及注意事項(xiàng)
3.5 for語句的使用及注意事項(xiàng)
3.6 while循環(huán)與do while循環(huán)的使用及區(qū)別
3.7 循環(huán)結(jié)構(gòu)中break、continue、goto、return和exit的區(qū)別
第4章 數(shù)組
4.1 一維數(shù)組的定義及引用
4.2 二維數(shù)組的定義及引用
4.3 多維數(shù)組的定義及引用
4.4 字符數(shù)組的定義及引用
4.5 數(shù)組作為函數(shù)參數(shù)的易錯(cuò)點(diǎn)解析
4.6 動(dòng)態(tài)數(shù)組的創(chuàng)建及引用
第5章 指針
5.1 不同類型指針之間的區(qū)別和聯(lián)系
5.2 指針的一般性用法及注意事項(xiàng)
5.3 指針與地址之間的關(guān)系
5.4 指針與數(shù)組之間的關(guān)系
5.5 指針與字符串之間的關(guān)系
5.6 指針與函數(shù)之間的關(guān)系
5.7 指針與指針之間的關(guān)系
第6章 數(shù)據(jù)結(jié)構(gòu)
6.1 枚舉類型的使用及注意事項(xiàng)
6.2 結(jié)構(gòu)體變量的初始化方法及引用
6.2.1 結(jié)構(gòu)體的初始化
6.2.2 結(jié)構(gòu)體的引用
6.3 結(jié)構(gòu)體字節(jié)對(duì)齊詳解
6.4 共用體變量的初始化方法及成員的引用
6.5 傳統(tǒng)鏈表的實(shí)現(xiàn)方法及注意事項(xiàng)
6.6 顛覆傳統(tǒng)鏈表的實(shí)現(xiàn)方法
6.6.1 頭結(jié)點(diǎn)的創(chuàng)建
6.6.2 結(jié)點(diǎn)的添加
6.6.3 結(jié)點(diǎn)的刪除
6.6.4 結(jié)點(diǎn)位置的調(diào)整
6.6.5 檢測(cè)鏈表是否為空
6.6.6 鏈表的合成
6.6.7 宿主結(jié)構(gòu)指針
6.6.8 鏈表的遍歷
第7章 函數(shù)
7.1 函數(shù)參數(shù)
7.2 變參函數(shù)的實(shí)現(xiàn)方法
7.3 函數(shù)指針的使用方法
7.4 函數(shù)之間的調(diào)用關(guān)系
7.5 函數(shù)的調(diào)用方式及返回值
第8章 文件
8.1 文件及文件指針
8.2 EOF和FEOF的區(qū)別
8.3 讀寫函數(shù)的選用原則
8.4 位置指針對(duì)文件的定位
8.5 文件中的出錯(cuò)檢測(cè)
第9章 調(diào)試和異常處理
9.1 assert宏的使用及注意事項(xiàng)
9.2 如何設(shè)計(jì)一種靈活的斷言
9.3 如何實(shí)現(xiàn)異常處理
9.4 如何處理段錯(cuò)誤
第10章 陷阱知識(shí)點(diǎn)解剖
10.1 strlen和sizeof的區(qū)別
10.2 const修飾符
10.3 volatile修飾符
10.4 void和void*的區(qū)別
10.5 #define和typedef的本質(zhì)區(qū)別
10.6 條件語句的選用
10.7 函數(shù)realloc、malloc和calloc的區(qū)別
10.8 函數(shù)和宏
10.9 運(yùn)算符==、=和!=的區(qū)別
10.10 類型轉(zhuǎn)換
第11章 必須掌握的常用算法
11.1 時(shí)間復(fù)雜度
11.2 冒泡法排序
11.3 選擇法排序
11.4 快速排序
11.5 歸并排序
11.6 順序查找
11.7 二分查找
附錄 如何養(yǎng)成良好的編程習(xí)慣
章節(jié)摘錄
第1章 必須厘清的核心概念 1.1 堆?! ?.2 全局變量和局部變量 1.3 生存期和作用域 1.4 內(nèi)部函數(shù)和外部函數(shù) 1.5 指針變量 1.6 指針數(shù)組和數(shù)組指針 1.7 指針函數(shù)和函數(shù)指針 1.8 傳值和傳址 1.9 遞歸和嵌套 1.10 結(jié)構(gòu)體 1.11 共用體 1.12 枚舉 1.13 位域 人或多或少都有一點(diǎn)惰性和急功近利,我就是這樣,在一開始學(xué)習(xí)編程的時(shí)候不喜歡閱讀那些枯燥的文字,喜歡直接去閱讀代碼。但是漸漸地,我發(fā)現(xiàn)一個(gè)問題,那就是編程時(shí)經(jīng)常會(huì)犯一些低級(jí)的錯(cuò)誤。通過總結(jié)才明白,這些錯(cuò)誤源于自己對(duì)C語言中的基本概念一知半解,知其然,不知其所以然,發(fā)現(xiàn)問題后才意識(shí)到那些枯燥的文字對(duì)掌握并熟練使用C語言非常重要。為了讓讀者少走一些彎路,本書的第1章先來介紹C語言中的核心概念?! ¢_始本章的學(xué)習(xí)之前,先向讀者交代一下,由于本章涉及的知識(shí)范圍較廣,有些初學(xué)者理解起來會(huì)有些吃力,因此建議讀者有選擇地閱讀,遇到陌生知識(shí)點(diǎn)可以暫時(shí)跳過,待學(xué)習(xí)了后面章節(jié)的內(nèi)容后再回過頭來閱讀這一章的相關(guān)內(nèi)容。當(dāng)然,學(xué)習(xí)代碼的最佳方法是動(dòng)手,所以本章在講解C語言的一些基本概念的同時(shí),為了便于讀者理解,有針對(duì)性地列舉了一些代碼,讀者也可以通過這些代碼來驗(yàn)證所學(xué)的概念,體會(huì)學(xué)習(xí)的樂趣,以避免單純通過閱讀文字來枯燥地學(xué)習(xí)概念?! ?hellip;…
媒體關(guān)注與評(píng)論
在編程語言領(lǐng)域,各種新的語言一直層出不窮,C語言雖已有數(shù)十年的歷史,但卻依然位于編程語言排行榜的榜首,這在編程領(lǐng)域算是獨(dú)一無二了。C語言入門相對(duì)簡(jiǎn)單,但是要透徹理解和掌握卻不容易,本書對(duì)初學(xué)者不易理解的難點(diǎn)、疑點(diǎn)和重要知識(shí)點(diǎn)進(jìn)行了解讀和剖析,內(nèi)容不僅涉及幾乎所有的語法知識(shí)點(diǎn),而且也包括算法和編碼規(guī)范方面的話題。對(duì)于有一定經(jīng)驗(yàn)且想進(jìn)一步提高的C語言開發(fā)者而言,本書值得仔細(xì)品讀,強(qiáng)烈推薦! ——中國(guó)領(lǐng)先的IT技術(shù)網(wǎng)站
編輯推薦
透析C語言中的核心概念、重要知識(shí)點(diǎn)、不易理解的知識(shí)點(diǎn),以及容易被錯(cuò)誤理解的知識(shí)點(diǎn),是修煉C程序設(shè)計(jì)能力的必讀之作!
圖書封面
圖書標(biāo)簽Tags
無
評(píng)論、評(píng)分、閱讀與下載