本書從計(jì)算機(jī)基礎(chǔ)知識(shí)講起,繼而介紹標(biāo)準(zhǔn)C語(yǔ)言,還包含C語(yǔ)言編程必需的若干重要內(nèi)容。 本書深入淺出,文字簡(jiǎn)練,將復(fù)雜的問(wèn)題簡(jiǎn)單化,篇幅不大但內(nèi)容全面;對(duì)各章節(jié)的重點(diǎn)、難點(diǎn)把握準(zhǔn)確,處理得當(dāng);注重培養(yǎng)編程思維能力,對(duì)編程時(shí)易犯的錯(cuò)誤點(diǎn)評(píng)到位。本書對(duì)C語(yǔ)言中重要的內(nèi)容(函數(shù)、指針、數(shù)組、文件四部分)的編寫,會(huì)使讀者的認(rèn)識(shí)上升一個(gè)層次。 本書作者講授C語(yǔ)言課程20多年,有豐富的編程和教學(xué)經(jīng)驗(yàn),對(duì)學(xué)生的思維方式和學(xué)習(xí)狀況非常了解,對(duì)C語(yǔ)言的知識(shí)體系非常熟悉。在書中,作者奉獻(xiàn)了自己對(duì)許多問(wèn)題的獨(dú)到見(jiàn)解。書中大量的編程經(jīng)驗(yàn)和注意事項(xiàng),蘊(yùn)含著作者長(zhǎng)期的積累,凝聚著C語(yǔ)言的精華。 本書適合作為高等學(xué)校各專業(yè)程序設(shè)計(jì)基礎(chǔ)或C語(yǔ)言程序設(shè)計(jì)等課程的教材,也可作為自學(xué)教材或?qū)W習(xí)參考書,尤其適合作為C程序員的編程指導(dǎo)手冊(cè)和入門教材。
C語(yǔ)言是高等學(xué)校計(jì)算機(jī)專業(yè)及相關(guān)專業(yè)必修的專業(yè)基礎(chǔ)課之一,是培養(yǎng)學(xué)生算法思維能力、動(dòng)手能力的主要課程和工具,也是面向?qū)ο蟪绦蛟O(shè)計(jì)、數(shù)據(jù)結(jié)構(gòu)等后續(xù)課程的先導(dǎo)課。學(xué)生對(duì)C語(yǔ)言的掌握情況在很大程度上決定著大學(xué)四年的學(xué)習(xí)情況。
本書作者在2015年編寫的《深入淺出新編C語(yǔ)言教程》受到廣大讀者的廣泛好評(píng)。在此基礎(chǔ)上,作者對(duì)原版進(jìn)行了修訂,在內(nèi)容上進(jìn)行了調(diào)整、改進(jìn)和補(bǔ)充,終形成了本書。本書通過(guò)探究式的講解,使讀者對(duì)每個(gè)知識(shí)點(diǎn)的理解更加準(zhǔn)確、透徹。
編寫本書的指導(dǎo)思想
(1) 零基礎(chǔ)講起。針對(duì)剛進(jìn)入大學(xué)的新生及初級(jí)程序員,將C語(yǔ)言編程的一些必要的計(jì)算機(jī)知識(shí)納入本書第1章。
(2) 按符合讀者認(rèn)知規(guī)律的自然順序安排章節(jié)。
(3) 化繁為簡(jiǎn)、化整為零。重要的知識(shí)點(diǎn)單獨(dú)寫成一章,每章內(nèi)容相對(duì)獨(dú)立,與其他知識(shí)點(diǎn)關(guān)聯(lián)少,條理清楚,易于初學(xué)者掌握。
(4) 對(duì)指針一章的內(nèi)容和文件一章的內(nèi)容重點(diǎn)著墨,描述清楚,使讀者更容易掌握這兩章內(nèi)容。
(5) 將作者多年積累的教學(xué)經(jīng)驗(yàn)、對(duì)若干問(wèn)題的獨(dú)到見(jiàn)解、編程注意事項(xiàng)、典型例題和習(xí)題寫到書中,讓讀者更有針對(duì)性地學(xué)習(xí)。
本書在以下幾方面做了較大改進(jìn)。
1. 對(duì)教材內(nèi)容的改進(jìn)
1) 增加了以下幾部分內(nèi)容
要學(xué)好C語(yǔ)言,下面的知識(shí)是必要的。
(1) 計(jì)算機(jī)基礎(chǔ)知識(shí)。絕大多數(shù)學(xué)校把C語(yǔ)言放在大一的學(xué)期開(kāi)設(shè),對(duì)于沒(méi)有任何計(jì)算機(jī)基礎(chǔ)的新生來(lái)說(shuō),C語(yǔ)言的知識(shí)仿佛天書。因此,本書從計(jì)算機(jī)基礎(chǔ)知識(shí)講起,這些基礎(chǔ)知識(shí)包括內(nèi)存和內(nèi)存地址的概念,二進(jìn)制,不同數(shù)制之間的轉(zhuǎn)換,原碼、反碼和補(bǔ)碼的求法,計(jì)算機(jī)語(yǔ)言及語(yǔ)言處理過(guò)程等。
(2) 有關(guān)程序、指令和輸入輸出重定向的概念。C語(yǔ)言中,很多地方需要用到程序與指令以及輸入輸出重定向的概念,故也把這兩部分內(nèi)容編入本書。其中,程序與指令部分放在第1章,輸入輸出重定向部分放在附錄中,供需要的讀者自學(xué)。
(3) 緩沖區(qū)及鍵盤緩沖區(qū)的概念。學(xué)習(xí)C語(yǔ)言的輸入輸出,緩沖區(qū)是個(gè)繞不開(kāi)的話題。如果不知道數(shù)據(jù)從鍵盤到緩沖區(qū)的處理過(guò)程,就很難掌握輸入輸出,就很難解釋為什么程序會(huì)出現(xiàn)那些意想不到的運(yùn)行結(jié)果。
(4) 函數(shù)的作用和函數(shù)設(shè)計(jì)的原則。函數(shù)是被用來(lái)調(diào)用的,因此函數(shù)的適用性和靈活性是衡量一個(gè)函數(shù)優(yōu)劣的重要指標(biāo)。本書不但注重講解函數(shù)定義和函數(shù)調(diào)用的格式、函數(shù)參數(shù)傳遞的特點(diǎn),而且對(duì)于函數(shù)的作用和設(shè)計(jì)原則(追求通用性、可利用率等)進(jìn)行重點(diǎn)講述。本書從函數(shù)返回值的設(shè)定和參數(shù)設(shè)定兩方面詳細(xì)講述函數(shù)設(shè)計(jì)的原則。
C語(yǔ)言可以這樣學(xué)(第2版·MOOC版·題庫(kù)版·OnlineJudge版)前言(5) 文件操作原理及相關(guān)細(xì)節(jié)問(wèn)題。文件一章的內(nèi)容非常重要,但又特別難懂。難懂的原因有三:一是講解時(shí)如果未給出文件操作的原理,那么學(xué)生知其然,不知其所以然;二是有幾個(gè)概念特別容易混淆,如寫數(shù)據(jù)有文本和二進(jìn)制兩種方式,文件分為文本和二進(jìn)制兩類文件,文件的打開(kāi)方式也分為文本方式和二進(jìn)制方式,講解時(shí)如果未明確指出它們之間有無(wú)關(guān)聯(lián),區(qū)別是什么,會(huì)導(dǎo)致學(xué)生概念混亂;三是在介紹文件操作時(shí)如果對(duì)一些重要內(nèi)容不予講解,會(huì)導(dǎo)致學(xué)生一編程就出錯(cuò),望文件而生畏。本書對(duì)上面所說(shuō)問(wèn)題均做了詳細(xì)講述并予以例證。
2) 對(duì)讀者容易忽視的問(wèn)題進(jìn)行了探討
(1) 對(duì)指針進(jìn)行了深入探討。
(2) 對(duì)文件操作中的一些問(wèn)題進(jìn)行了探討。例如,函數(shù)feof()何時(shí)返回非零值問(wèn)題、用二進(jìn)制方式能否打開(kāi)文本文件、用文本方式打開(kāi)文件后能否以二進(jìn)制方式向其中寫數(shù)據(jù)等問(wèn)題。
(3) 討論了共用體變量能否初始化、共用體變量能否作為參數(shù)等問(wèn)題。
2. 對(duì)各章節(jié)的內(nèi)容分配及前后順序做了較大調(diào)整和優(yōu)化
1) 對(duì)指針內(nèi)容的分解
指針是C語(yǔ)言的精華,但指針又非常難學(xué)。C語(yǔ)言中指針的類型很多,如此多的類型本就容易混淆,如果把它們?nèi)糠旁谝徽轮兄v解,顯得很全面、很系統(tǒng),但學(xué)生要在一章中(一兩周的時(shí)間)弄懂如此多且抽象難懂的內(nèi)容,實(shí)在是勉為其難。
本書將指針重要的兩個(gè)應(yīng)用用指針變量訪問(wèn)變量、用指針變量訪問(wèn)下標(biāo)變量?jī)刹糠殖槌鰜?lái)作為單獨(dú)的兩章來(lái)講解。其中,用指針變量訪問(wèn)變量一章放在函數(shù)之后、數(shù)組之前講解,用指針變量訪問(wèn)下標(biāo)變量一章放在數(shù)組之后講解,其余內(nèi)容放在指針綜述一章中介紹。如此分解可化繁為簡(jiǎn),具有重點(diǎn)突出、針對(duì)性強(qiáng)、易于接受等優(yōu)點(diǎn),也彰顯了指針的這兩個(gè)重要用途。另外,如此設(shè)計(jì)也可把對(duì)指針的學(xué)習(xí)從短短一兩周擴(kuò)展到前后約一個(gè)月。較長(zhǎng)時(shí)間的消化,有利于學(xué)生更好地理解指針、掌握指針。
2) 各章節(jié)順序的調(diào)整
(1) 數(shù)組和指針的順序問(wèn)題。如果先講數(shù)組,再講指針,帶來(lái)的問(wèn)題就是無(wú)法對(duì)數(shù)組名進(jìn)行解釋。實(shí)際上數(shù)組名在多數(shù)情況下都是一個(gè)指針。在不介紹指針的情況下,很難把數(shù)組一章的內(nèi)容講清、講透。
(2) 數(shù)組和函數(shù)的順序問(wèn)題。如果把函數(shù)放在數(shù)組之后講解,那么把數(shù)組名作為參數(shù)放在函數(shù)一章中,看起來(lái)似乎歸類得當(dāng),豈不知這樣一來(lái)就掩蓋了函數(shù)一章的重點(diǎn)。函數(shù)一章,應(yīng)該教給學(xué)生的是如何把函數(shù)設(shè)計(jì)得當(dāng),便于其他函數(shù)調(diào)用,只應(yīng)突出這一重點(diǎn)。如果把數(shù)組問(wèn)題也放在函數(shù)一章中,就會(huì)喧賓奪主,因?yàn)閿?shù)組名作參數(shù)本身也是非常重要的一個(gè)知識(shí)點(diǎn)。
綜上所述,合適的順序安排應(yīng)是函數(shù)、指針(1)、數(shù)組、指針(2)、指針綜述。
本書的使用建議
建議理論授課學(xué)時(shí)數(shù)為56~64,實(shí)驗(yàn)學(xué)時(shí)數(shù)為32。
第1章計(jì)算機(jī)基礎(chǔ)知識(shí),若授課對(duì)象不是大一學(xué)期新生,已有基礎(chǔ),可以不講,或只講需要的部分。
本書適用對(duì)象:高等院校本、專科所有開(kāi)設(shè)程序設(shè)計(jì)基礎(chǔ)或C語(yǔ)言程序設(shè)計(jì)課程的學(xué)生,或自學(xué)C語(yǔ)言的讀者,以及初級(jí)向高級(jí)進(jìn)階的程序員。
其他說(shuō)明
1. 本書所用編譯器
本書講解時(shí)兼顧Visual C 6.0(簡(jiǎn)稱VC)和Turbo C 2.0,但程序主要是針對(duì)VC編寫的,所有源程序都在VC中調(diào)試、運(yùn)行過(guò),例題中的運(yùn)行結(jié)果都是在VC中得到的。
2. 例題和源代碼
本書配套資料(可以從www.tup.com.cn下載)中含有全部例題的107個(gè)源代碼,例題編號(hào)與源程序的編號(hào)一一對(duì)應(yīng)。例如,例2.1的源代碼對(duì)應(yīng)資料中的源文件s2_1.c,若該例題有3種解法,則對(duì)應(yīng)的源文件分別是s2_1_1.c、s2_1_2.c和s2_1_3.c。
3. 本書所獲得的項(xiàng)目資助
\[1\] 教育部新工科研究與實(shí)踐項(xiàng)目(EXTYR20200640), 以建設(shè)一流本科專業(yè)為契機(jī),依托山東省未來(lái)智能計(jì)算協(xié)同創(chuàng)新中心,打造新工科協(xié)同育人實(shí)踐創(chuàng)新平臺(tái),教育部。
\[2\] 山東省研究生教育質(zhì)量提升計(jì)劃項(xiàng)目(SDYKC19199), 算法分析與設(shè)計(jì), 山東省教育廳。
\[3\] 山東省教育教學(xué)研究課題(2021JXY042),建設(shè)一流本科專業(yè),賦能山東省數(shù)字經(jīng)濟(jì)發(fā)展, 山東省教育科學(xué)研究院。
\[4\] 煙臺(tái)市校地融合發(fā)展項(xiàng)目,賦能煙臺(tái)戰(zhàn)略性新興產(chǎn)業(yè)發(fā)展,打造一流軟件工程專業(yè), 煙臺(tái)市教育局。
本書引用了MOOC中的視頻,在此向參與錄制視頻的于文麗、曹旗磊、王涵3位老師表示感謝。
原達(dá)教授、謝青松教授對(duì)本書的編寫給予了熱情幫助和大力支持,在此向兩位教授深表謝意。此外,本書的編寫參考了大量的書籍和文獻(xiàn)資料,謹(jǐn)向這些書籍和文獻(xiàn)資料的作者表示感謝。在本書的編寫出版過(guò)程中得到了清華大學(xué)出版社的大力支持和幫助,在此表示感謝。
由于時(shí)間倉(cāng)促和作者水平所限,書中難免存在疏漏和欠妥之處,請(qǐng)各位專家、讀者不吝指正。
作者2021年9月
王金鵬 教授,畢業(yè)于北京大學(xué),從事計(jì)算機(jī)教學(xué)和科研多年,首批一流本科課程《程序設(shè)計(jì)基礎(chǔ)》主講教師、負(fù)責(zé)人,首屆全國(guó)煤炭教學(xué)名師,近年來(lái)在國(guó)內(nèi)外刊物發(fā)表科研論文十幾篇,出版教材4部,主持省級(jí)科研和教改項(xiàng)目多項(xiàng)。長(zhǎng)期進(jìn)行C語(yǔ)言教學(xué),講授程序設(shè)計(jì)基礎(chǔ)(C語(yǔ)言)20多年,有著豐富的教學(xué)經(jīng)驗(yàn)和心得,連續(xù)多年獲得優(yōu)秀教學(xué)質(zhì)量一等獎(jiǎng),在學(xué)生中享有很高的聲譽(yù)和威望
第1章計(jì)算機(jī)基礎(chǔ)知識(shí)1
1.1計(jì)算機(jī)的硬件組成1
1.1.1運(yùn)算器1
1.1.2控制器1
1.1.3存儲(chǔ)器1
1.1.4輸入設(shè)備3
1.1.5輸出設(shè)備3
1.2數(shù)制及數(shù)制間的轉(zhuǎn)換3
1.2.1二進(jìn)制3
1.2.2八進(jìn)制5
1.2.3十六進(jìn)制5
1.3計(jì)算機(jī)中的信息編碼6
1.3.1整數(shù)的編碼6
1.3.2字符的編碼7
1.4程序及程序的執(zhí)行過(guò)程7
1.4.1計(jì)算機(jī)指令7
1.4.2計(jì)算機(jī)程序7
1.4.3程序的執(zhí)行過(guò)程7
1.5計(jì)算機(jī)語(yǔ)言8
1.5.1機(jī)器語(yǔ)言8
1.5.2匯編語(yǔ)言9
1.5.3高級(jí)語(yǔ)言9
1.6算法10
1.6.1算法的概念11
1.6.2算法的特性11
1.6.3算法的表示12
1.6.4程序的3種基本結(jié)構(gòu)12
習(xí)題113
第2章C程序和C編譯器簡(jiǎn)介15
2.1C語(yǔ)言及C標(biāo)準(zhǔn)簡(jiǎn)介15
2.1.1C語(yǔ)言的出現(xiàn)15
2.1.2C語(yǔ)言的特點(diǎn)15
2.1.3C標(biāo)準(zhǔn)16
2.2簡(jiǎn)單的C程序17
2.3C程序的構(gòu)成21
2.4C編譯器及操作簡(jiǎn)介23
2.4.1Turbo C 2.0編程環(huán)境及常用操作簡(jiǎn)介23
2.4.2Visual C 6.0編程環(huán)境及常用操作簡(jiǎn)介27
2.5編程常見(jiàn)錯(cuò)誤及處理流程32
2.5.1編譯錯(cuò)誤32
2.5.2連接錯(cuò)誤33
2.5.3邏輯錯(cuò)誤33
2.5.4運(yùn)行錯(cuò)誤33
習(xí)題233
C語(yǔ)言可以這樣學(xué)(第2版·MOOC版·題庫(kù)版·OnlineJudge版)目錄第3章C編程基礎(chǔ)知識(shí)35
3.1常量和變量35
3.1.1常量35
3.1.2變量35
3.2基本數(shù)據(jù)類型40
3.2.1整型數(shù)據(jù)40
3.2.2實(shí)型數(shù)據(jù)42
3.2.3字符型數(shù)據(jù)45
3.2.4字符串47
3.3符號(hào)常量和常變量48
3.3.1符號(hào)常量48
3.3.2常變量48
3.4運(yùn)算符和表達(dá)式49
3.4.1算術(shù)運(yùn)算符49
3.4.2賦值運(yùn)算符和賦值表達(dá)式50
3.4.3自增自減運(yùn)算符51
3.4.4逗號(hào)運(yùn)算符和逗號(hào)表達(dá)式53
3.4.5類型轉(zhuǎn)換運(yùn)算符54
3.5數(shù)據(jù)的類型轉(zhuǎn)換55
習(xí)題356
第4章順序結(jié)構(gòu)程序設(shè)計(jì)59
4.1賦值語(yǔ)句59
4.1.1賦值語(yǔ)句及其執(zhí)行過(guò)程59
4.1.2賦值的幾種數(shù)據(jù)處理方式59
4.2輸入輸出函數(shù)63
4.2.1緩沖區(qū)的概念及作用63
4.2.2getchar()和putchar()64
4.2.3printf()和scanf()65
4.3順序結(jié)構(gòu)程序設(shè)計(jì)舉例70
習(xí)題472
第5章選擇結(jié)構(gòu)程序設(shè)計(jì)76
5.1關(guān)系運(yùn)算符和關(guān)系表達(dá)式76
5.1.1關(guān)系運(yùn)算符76
5.1.2關(guān)系表達(dá)式76
5.2邏輯運(yùn)算符和邏輯表達(dá)式77
5.2.1邏輯運(yùn)算符77
5.2.2邏輯表達(dá)式78
5.3if語(yǔ)句79
5.3.1if語(yǔ)句的格式79
5.3.2if語(yǔ)句的使用說(shuō)明80
5.3.3嵌套的if語(yǔ)句83
5.3.4if語(yǔ)句應(yīng)用舉例85
5.3.5if語(yǔ)句編程的常見(jiàn)問(wèn)題87
5.4條件運(yùn)算符和條件表達(dá)式92
5.5switch語(yǔ)句93
5.5.1switch語(yǔ)句的格式及執(zhí)行過(guò)程94
5.5.2switch語(yǔ)句應(yīng)用舉例96
5.5.3switch語(yǔ)句編程的常見(jiàn)錯(cuò)誤97
習(xí)題598
第6章循環(huán)結(jié)構(gòu)程序設(shè)計(jì)104
6.1循環(huán)及其實(shí)現(xiàn)思想104
6.2循環(huán)語(yǔ)句105
6.2.1while循環(huán)105
6.2.2dowhile循環(huán)107
6.2.3for循環(huán)108
6.2.43種循環(huán)的比較110
6.3循環(huán)的控制111
6.3.1計(jì)數(shù)器控制循環(huán)和其他條件控制循環(huán)111
6.3.2break和continue112
6.3.3循環(huán)結(jié)束后循環(huán)變量的值與終值的比較115
6.4多重循環(huán)116
6.5循環(huán)編程舉例117
習(xí)題6126
第7章函數(shù)132
7.1函數(shù)的作用132
7.2函數(shù)的定義134
7.2.1函數(shù)定義的格式134
7.2.2函數(shù)的返回值134
7.2.3函數(shù)參數(shù)的設(shè)置138
7.3函數(shù)的調(diào)用140
7.3.1函數(shù)調(diào)用前的聲明140
7.3.2函數(shù)調(diào)用的方式142
7.4函數(shù)的參數(shù)傳遞143
7.4.1形參與實(shí)參143
7.4.2參數(shù)的傳遞143
7.4.3參數(shù)傳遞的單向性144
7.5函數(shù)的嵌套調(diào)用145
7.6遞歸函數(shù)146
7.6.1遞歸的條件146
7.6.2遞歸函數(shù)的執(zhí)行過(guò)程147
7.6.3遞歸與迭代149
7.7函數(shù)編程舉例150
7.8內(nèi)部函數(shù)和外部函數(shù)153
習(xí)題7154
第8章變量的作用域和存儲(chǔ)類別158
8.1變量的作用域158
8.1.1局部變量158
8.1.2全局變量158
8.2同名變量的辨析160
8.3變量的存儲(chǔ)類別和生存期162
8.3.1內(nèi)存的存儲(chǔ)區(qū)域162
8.3.2動(dòng)態(tài)變量162
8.3.3靜態(tài)變量163
8.4變量的作用域和生存期小結(jié)164
習(xí)題8165
第9章編譯預(yù)處理168
9.1宏定義168
9.1.1無(wú)參宏定義168
9.1.2有參宏定義169
9.1.3嵌套的宏定義170
9.2文件包含170
9.2.1文件包含的格式170
9.2.2文件包含的作用171
9.2.3文件包含兩種格式的區(qū)別171
9.3條件編譯172
9.3.1條件編譯的格式172
9.3.2條件編譯應(yīng)用舉例174
習(xí)題9175
第10章用指針變量訪問(wèn)變量178
10.1指針和指針變量178
10.1.1指針和指針變量的概念178
10.1.2直接尋址和間接尋址179
10.1.3指針變量的值、地址及類型181
10.2通過(guò)指針變量訪問(wèn)變量181
10.2.1指針變量的定義181
10.2.2指針變量的賦值182
10.2.3通過(guò)指針變量間接訪問(wèn)一個(gè)變量183
10.3指針變量在函數(shù)傳遞中的作用183
習(xí)題10188
第11章數(shù)組191
11.1一維數(shù)組191
11.1.1一維數(shù)組的定義191
11.1.2一維數(shù)組的元素構(gòu)成及一維數(shù)組的存儲(chǔ)結(jié)構(gòu)192
11.1.3數(shù)組名的指針類型192
11.1.4數(shù)組元素的表示方法193
11.1.5一維數(shù)組的引用194
11.1.6一維數(shù)組的初始化196
11.1.7一維數(shù)組應(yīng)用舉例196
11.2二維數(shù)組201
11.2.1二維數(shù)組的定義201
11.2.2二維數(shù)組的元素構(gòu)成及二維數(shù)組的存儲(chǔ)結(jié)構(gòu)202
11.2.3二維數(shù)組名的指針類型202
11.2.4二維數(shù)組中下標(biāo)變量的表示方法203
11.2.5二維數(shù)組的引用204
11.2.6二維數(shù)組的初始化205
11.2.7二維數(shù)組應(yīng)用舉例205
11.3字符數(shù)組和字符串處理函數(shù)206
11.3.1字符數(shù)組206
11.3.2字符串處理函數(shù)207
11.3.3字符數(shù)組應(yīng)用舉例211
習(xí)題11213
第12章用指針變量訪問(wèn)下標(biāo)變量218
12.1用指針變量訪問(wèn)下標(biāo)變量的方法218
12.1.1知識(shí)回顧218
12.1.2用指針變量訪問(wèn)一維數(shù)組中的下標(biāo)變量218
12.1.3用指針變量訪問(wèn)二維數(shù)組中的下標(biāo)變量220
12.2用指針變量訪問(wèn)下標(biāo)變量的適用場(chǎng)合221
習(xí)題12224
第13章指針綜述228
13.1指針類型簡(jiǎn)介228
13.2指向變量的指針229
13.2.1指向變量的指針常量229
13.2.2指向變量的指針變量229
13.3指向數(shù)組的指針230
13.3.1指向一維數(shù)組的指針常量230
13.3.2指向一維數(shù)組的指針變量231
13.3.3指向一維數(shù)組的指針變量的適用場(chǎng)合232
13.4指針與字符串234
13.4.1字符串的表示方式234
13.4.2用指針變量處理字符串235
13.5指針與函數(shù)237
13.5.1函數(shù)的入口地址237
13.5.2指向函數(shù)的指針變量238
13.5.3指向函數(shù)的指針變量的作用238
13.5.4指針函數(shù)239
13.6指針數(shù)組240
13.6.1指針數(shù)組的定義240
13.6.2指針數(shù)組的引用241
13.6.3指針數(shù)組應(yīng)用舉例241
13.7指向指針變量的指針242
13.7.1指向指針變量的指針常量242
13.7.2指向指針變量的指針變量242
13.7.3應(yīng)用舉例243
13.8帶參數(shù)的main()函數(shù)245
13.8.1C語(yǔ)言對(duì)main()函數(shù)參數(shù)的規(guī)定245
13.8.2帶參數(shù)main()函數(shù)的作用245
13.8.3帶參數(shù)的main()函數(shù)的執(zhí)行過(guò)程246
13.8.4程序舉例246
13.9動(dòng)態(tài)內(nèi)存分配247
13.9.1動(dòng)態(tài)內(nèi)存分配函數(shù)247
13.9.2動(dòng)態(tài)內(nèi)存分配舉例248
習(xí)題13249
第14章數(shù)據(jù)類型的自定義254
14.1結(jié)構(gòu)體的定義和結(jié)構(gòu)體變量的定義254
14.1.1結(jié)構(gòu)體的概念和結(jié)構(gòu)體的定義254
14.1.2結(jié)構(gòu)體變量的定義和空間分配256
14.1.3結(jié)構(gòu)體變量的初始化258
14.1.4結(jié)構(gòu)體數(shù)組的定義和初始化259
14.2結(jié)構(gòu)體變量的引用259
14.2.1結(jié)構(gòu)體變量的引用方法259
14.2.2結(jié)構(gòu)體變量引用舉例260
14.3用指針變量操作結(jié)構(gòu)體變量261
14.3.1為什么要通過(guò)指針變量訪問(wèn)結(jié)構(gòu)體變量261
14.3.2應(yīng)用舉例262
14.4鏈表及鏈表操作簡(jiǎn)介263
14.4.1鏈表的概念263
14.4.2使用鏈表的優(yōu)點(diǎn)264
14.4.3鏈表操作簡(jiǎn)介264
14.5共用體269
14.5.1共用體的概念269
14.5.2共用體的作用270
14.5.3共用體及共用體變量的定義271
14.5.4共用體變量(數(shù)組)的初始化272
14.5.5共用體變量的引用272
14.5.6共用體的兩個(gè)妙用272
14.6枚舉類型273
14.6.1枚舉類型的定義273
14.6.2枚舉變量的定義274
14.6.3枚舉變量的使用275
14.6.4枚舉應(yīng)用舉例275
14.7用typedef定義類型別名276
習(xí)題14277
第1章位運(yùn)算280
15.1C語(yǔ)言中的位運(yùn)算符280
15.2位運(yùn)算及應(yīng)用281
15.2.1按位與281
15.2.2按位或282
15.2.3按位異或283
15.2.4按位取反284
15.2.5按位左移284
15.2.6按位右移285
習(xí)題15286
第16章文件288
16.1文件及相關(guān)的概念288
16.1.1文件的范疇288
16.1.2文件中存儲(chǔ)數(shù)據(jù)的兩種方式288
16.1.3文件的種類289
16.1.4文件操作函數(shù)及緩沖區(qū)的概念290
16.2文件讀寫的原理291
16.3文件的讀寫位置指針和文件結(jié)束標(biāo)志292
16.3.1讀寫位置指針292
16.3.2文件結(jié)束標(biāo)志292
16.4文件的打開(kāi)和關(guān)閉293
16.4.1文件的打開(kāi)293
16.4.2文件的關(guān)閉299
16.5文件的讀寫300
16.5.1fgetc()和fputc()301
16.5.2fread()和fwrite()303
16.5.3fgets()和fputs()307
16.5.4fscanf()和fprintf()308
16.6讀寫位置指針的移動(dòng)和定位310
16.6.1移動(dòng)讀寫位置指針的函數(shù)310
16.6.2兩個(gè)與讀寫位置指針有關(guān)的函數(shù)311
16.7文件的出錯(cuò)檢測(cè)312
16.8文件操作舉例313
習(xí)題16317
第17章綜合應(yīng)用舉例320
17.1簡(jiǎn)單的計(jì)算器(一)320
17.2簡(jiǎn)單的計(jì)算器(二)322
17.3數(shù)據(jù)庫(kù)文件的讀取325
附錄AC語(yǔ)言規(guī)約335
附錄B輸入輸出重定向 337
附錄CC語(yǔ)言的關(guān)鍵字340
附錄D常用字符與ASCII碼對(duì)照表341
附錄E運(yùn)算符的優(yōu)先級(jí)和結(jié)合性342
附錄F常用庫(kù)函數(shù)344參考文獻(xiàn)349