關(guān)于我們
書單推薦
新書推薦
|
C程序設(shè)計——基于應(yīng)用導(dǎo)向與任務(wù)驅(qū)動的學(xué)習(xí)方法
本書采用以解決實際應(yīng)用問題為導(dǎo)向、以具體編程任務(wù)為驅(qū)動的模式,將C語言的知識無縫融入每個實際應(yīng)用程序中。作者精心設(shè)計了100多個應(yīng)用案例,每個案例均有實現(xiàn)特定功能的、完整的、可運(yùn)行的程序代碼。本書圖表豐富,對程序設(shè)計的概念、求解問題的思路和方法、程序背后的原理和機(jī)制進(jìn)行了深入剖析。全書共9章。第1章從簡單程序入手,將程序設(shè)計相關(guān)的基礎(chǔ)性概念融入案例,使讀者對C程序設(shè)計有一個整體的、直觀的、感性的認(rèn)識。第2章闡述表達(dá)復(fù)雜邏輯的分支和循環(huán)語句的用法,使讀者對應(yīng)用問題中的邏輯具有較好的表達(dá)能力。第3章闡述了利用數(shù)組處理批量數(shù)據(jù)。第4章闡述了如何存儲和處理文本型數(shù)據(jù)。第5章全面地闡述了函數(shù)這一模塊化程序設(shè)計利器。第6章對具有內(nèi)存間接訪問能力的指針進(jìn)行了深入闡述。第7章講解如何利用結(jié)構(gòu)體類型創(chuàng)建用戶所需新數(shù)據(jù)類型。第8章闡述了如何利用文件實現(xiàn)數(shù)據(jù)持久化。第9章講解了位運(yùn)算的規(guī)則和用法。
本書采用大量具有實際生活應(yīng)用背景的實例系統(tǒng)地、通俗地、透徹地講解了如何運(yùn)用C語言設(shè)計程序解決實際問題。本書提出的基于應(yīng)用導(dǎo)向與任務(wù)驅(qū)動的學(xué)習(xí)方法是值得推薦的程序設(shè)計學(xué)習(xí)方法。本書從形式到內(nèi)容都具有一定創(chuàng)新性。本書內(nèi)容組織獨(dú)具匠心、敘述方式通俗易懂、編程實例力求原創(chuàng)、任務(wù)驅(qū)動邏輯清晰、代碼注釋別具一格、知識擴(kuò)展開拓思路。
本書是大學(xué)工科類專業(yè)的*門程序設(shè)計課程的*教材,也是廣大零基礎(chǔ)學(xué)習(xí)程序設(shè)計讀者不二之選。
本書具有六大特色:
1、以應(yīng)用導(dǎo)向,將C語言的知識融匯貫穿在對實際問題求解的過程中,盡量避免單純語法的講解。
2、每個編程任務(wù)目標(biāo)明確、源于生活、意趣兼?zhèn)。以實際任務(wù)驅(qū)動編程,更加生動有趣。全書共150多個編程實例,可使用程序設(shè)計練習(xí)系統(tǒng)在線評判,方便上機(jī)練習(xí)。
3、本書大量運(yùn)用圖解、表格、小貼士、小問答等形式,運(yùn)用類比、對比等方法,盡量用直觀的形式幫助讀者理解程序設(shè)計中相對抽象的概念、原理、機(jī)制。
4、本書內(nèi)容深入淺出,表里兼顧,幫助讀者深入地理解程序底層的運(yùn)行機(jī)制和原理。使讀者在編程時做到知其然且知其所以然。本書語言通俗、可讀性好、方便自學(xué)又不失深度。
5、程序代碼與相應(yīng)注釋之間用箭頭連接,代碼和注釋,一目了然,方便閱讀。
6、本書始終站在程序設(shè)計者的角度即人的角度,來講解程序設(shè)計,而不是站在C語言的角度即語法的角度,來講解程序設(shè)計。本書始終以工具(C語言作為程序設(shè)計的)服務(wù)于目標(biāo)(求解實際問題)視角來展開討論。從這樣的視角出發(fā),讀者更容易理解和接受程序代碼。
前 言當(dāng)您第一眼見到這本書,一定詫異于它的厚度,但只要您翻開閱讀,我想,您一定不會覺得這是一本難啃的大部頭,而像是一本娓娓道來的程序設(shè)計故事書。 當(dāng)我想要編寫一本關(guān)于程序設(shè)計的教材時,難抑內(nèi)心的激動。我的第一門程序設(shè)計語言是BASIC,然后學(xué)習(xí)C語言,后來學(xué)過C 、Java、Python等程序設(shè)計語言。多數(shù)學(xué)過程序設(shè)計的人,對第一門程序設(shè)計語言的印象大抵是艱難而晦澀的。一些人秉承對程序設(shè)計的執(zhí)著和熱愛,從這種艱難中走過來了,并且從此愛上了程序設(shè)計,享受程序設(shè)計在解決現(xiàn)實生活的實際應(yīng)用問題后帶來的快樂和成就感。但更多的人對編程望而生畏,面對堪如天書的代碼,始終難解心中諸多困惑:這些代碼是如何寫出來的?為什么要寫成這樣?必須寫成這樣嗎?為什么我這樣寫就不對呢?解決此問題還有其他寫法嗎?為何當(dāng)我面對實際應(yīng)用問題時總感到無從下手呢?怎樣才能創(chuàng)造出屬于自己的程序呢? 我盡最大努力,使程序設(shè)計的每個細(xì)節(jié)變得簡單清晰。為了讓您理解程序的來龍去脈,對于每次需要解決的編程任務(wù),不是一次性地拋出最終程序代碼,而是必須對解決此問題的思路、方法進(jìn)行詳盡分析。并且遵循由簡單到復(fù)雜,由低級到高級的設(shè)計過程,盡可能完整地展示程序是怎樣煉成的。對于同一編程任務(wù),提供盡可能多的設(shè)計思路和不同的算法以及實現(xiàn)代碼,幫助您打開程序設(shè)計思維的匣子。 本書側(cè)重于培養(yǎng)您作為程序設(shè)計者必須具備的計算思維。所謂的計算思維,就是以計算機(jī)的方式去思考問題的求解過程。作為機(jī)器的計算機(jī)思考問題的方式與作為萬物之靈的人的思考問題方式是不同的。人通過學(xué)習(xí)程序設(shè)計去理解并掌握計算機(jī)思考問題的方式,這個過程就是培養(yǎng)計算思維的過程。因此,本書以求解具體應(yīng)用問題為目標(biāo),驅(qū)動相關(guān)程序設(shè)計知識的應(yīng)用。 本書強(qiáng)調(diào),程序設(shè)計語言是求解問題的工具,程序設(shè)計語言是為求解問題服務(wù)的。本書對語法的講解以夠用為準(zhǔn),不提倡代碼中應(yīng)用古怪、費(fèi)解的語法。當(dāng)然,程序設(shè)計必須掌握相關(guān)語法,有語法錯誤的程序過不了編譯關(guān)。掌握C語言語法不是程序設(shè)計學(xué)習(xí)的重點,更不是學(xué)習(xí)目的。培養(yǎng)計算思維,能利用程序設(shè)計語言解決實際應(yīng)用問題才是最終目的,學(xué)習(xí)程序設(shè)計必須過實際運(yùn)行關(guān)。 C語言具有語法簡潔、概念清晰、底層控制力強(qiáng)等優(yōu)點,是值得程序設(shè)計初學(xué)者首選的語言。C語言雖是面向過程的程序設(shè)計語言,但是學(xué)好C語言將為面向?qū)ο蟮某绦蛟O(shè)計語言(如C 、Java、C#、Python等)的學(xué)習(xí)打下堅實基礎(chǔ)。 學(xué)好編程沒有捷徑,上機(jī)練習(xí)、獨(dú)立思考、保持興趣、學(xué)用結(jié)合、日積月累、持之以恒是成為編程高手的秘籍。關(guān)于如何學(xué)習(xí)程序設(shè)計的建議請參見附錄10.1關(guān)于程序設(shè)計的學(xué)習(xí)方法(掃描前言中的二維碼)。 本書特色: 一、本書貫徹以求解應(yīng)用問題(實際應(yīng)用問題的一部分或?qū)嶋H應(yīng)用問題的簡化問題)為導(dǎo)向,以具體編程任務(wù)為驅(qū)動的程序設(shè)計學(xué)習(xí)方法,將每個知識點融入實際編程任務(wù)中。因此,展現(xiàn)在您面前的代碼是一個完整的、可運(yùn)行的、有輸入/輸出的、實現(xiàn)了一定功能的應(yīng)用程序,而不是僅僅為了講解某個知識點的片段的、不完整的代碼。 二、作為例題的編程任務(wù)生動有趣。每個編程任務(wù)力求有現(xiàn)實生活應(yīng)用背景,讓您時刻不忘學(xué)習(xí)程序設(shè)計的目的是能運(yùn)用計算機(jī)程序解決現(xiàn)實生活中或大或小的實際問題,體會計算機(jī)是如何按您的意圖行動的,體會計算機(jī)給我們生活帶來的方便,體會計算機(jī)的威力與魅力。編程不再是單純地學(xué)習(xí)C語言語法,也不是純粹為了實現(xiàn)數(shù)學(xué)的數(shù)值計算。 三、圖表豐富。本書秉承能用圖和表表達(dá)的,一定畫圖做表的思想。因此,書中配有大量圖解、表格,大量地運(yùn)用了類比、對比、小貼士、小問答等形式,盡量用直觀的形式幫助您理解程序設(shè)計的概念、原理、機(jī)制等方面。 四、講解深入淺出。本書融入了我多年程序設(shè)計教學(xué)經(jīng)驗、教學(xué)成果、應(yīng)用軟件開發(fā)經(jīng)驗和對程序設(shè)計的體會與理解。對程序中諸多概念的理解,需要程序設(shè)計者(以后簡稱為程序員)對操作系統(tǒng)的有關(guān)原理有一定的理解。因此,本書在講解程序的同時,盡量對發(fā)生在程序運(yùn)行背后的機(jī)制特別是操作系統(tǒng)中與編程相關(guān)的機(jī)制進(jìn)行了深入剖析。對操作系統(tǒng)和計算機(jī)原理的介紹,能幫助程序員深入地理解程序在底層的運(yùn)行機(jī)制,使程序員在編程時做到知其然且知其所以然。 五、程序代碼箭指代碼解釋,閱讀代碼一目了然、易讀易懂。對于程序代碼中每個重要語句,均引出箭頭指向相應(yīng)的代碼解釋,代碼和對應(yīng)的解釋是左鄰右舍、如影相隨的,方便閱讀。此外,在排版上,也盡量將一個完整程序或函數(shù)模塊的代碼排在同一頁中,確保代碼的形式整體性。 六、本書站在程序員的角度來看待和學(xué)習(xí)C語言,而不是站在C語言的角度羅列C語言知識本身。站在程序員的角度,面對編程任務(wù)時,我們應(yīng)該思考的是如何運(yùn)用C語言為我(即程序員)的設(shè)計目標(biāo)服務(wù)。從這個角度出發(fā),您就更容易理解和接受C語言的知識了。 本書的例題全部采用編程任務(wù)的形式給出。每個編程任務(wù)由8部分構(gòu)成:標(biāo)題、任務(wù)描述、輸入、輸出、輸入舉例、輸出舉例、分析,以及參考代碼。本書例題采用此形式是基于以下四點考慮的。 其一,這種方式對要解決的任務(wù)有清晰、準(zhǔn)確的編程描述,因此每個程序代碼需要達(dá)到的目標(biāo)和需要實現(xiàn)的功能非常明確。學(xué)習(xí)程序設(shè)計是為了能用自己設(shè)計的程序解決實際問題,因此,我們將本書讀者的角色定為軟件開發(fā)者。軟件開發(fā)是軟件開發(fā)者按照用戶提出的需求進(jìn)行軟件設(shè)計的過程。設(shè)計得到的軟件必須達(dá)到指定功能,滿足軟件用戶的需求。描述清晰、準(zhǔn)確的軟件需求對軟件開發(fā)至關(guān)重要。因為需求的小變化,可能導(dǎo)致軟件設(shè)計的巨大改變,甚至從頭重新設(shè)計。 其二,有利于獨(dú)立思考和尋求解決問題的多種方法,培養(yǎng)計算思維。在達(dá)到既定軟件開發(fā)目標(biāo)的情況下,鼓勵讀者學(xué)會分析問題,開動腦筋獨(dú)立思考,嘗試用不同思路、不同算法或不同的代碼去完成同一個任務(wù),對比不同實現(xiàn)方式之間的優(yōu)缺點。對于每個編程任務(wù),本書代碼僅供參考。本書絕不鼓勵讀者僅滿足于將本書代碼照抄照搬,死記硬背。 其三,對C語言知識點均采用融入具體編程任務(wù)的方式講解,使我們對每個C語言知識要素所適用的實際應(yīng)用場合有最感性的認(rèn)識。 其四,方便使用OJ作為程序設(shè)計在線練習(xí)平臺。本書的編程任務(wù)便于自動裁判(可簡單地將裁判理解為教師批改學(xué)生所交的程序設(shè)計作業(yè)這一過程)。國內(nèi)外有許多大學(xué)和組織提供了開放式的在線裁判系統(tǒng)(Online Judge,OJ),它能對提交的程序源代碼進(jìn)行自動裁判。OJ系統(tǒng)24小時在線練習(xí)資源豐富,裁判結(jié)果公正客觀。OJ系統(tǒng)原本為程序設(shè)計競賽所用,但是好的工具為什么不能用于學(xué)習(xí)呢?參加過信息學(xué)競賽(IOI,NOI)或大學(xué)生程序設(shè)計競賽(CPC)的讀者一定對這種編程任務(wù)的形式不陌生,因為競賽題采用此形式。希望本書讀者不要對此表示疑惑,學(xué)習(xí)程序設(shè)計當(dāng)然不是為了參加比賽。在此,只是取其長而用之,更好地服務(wù)于學(xué)習(xí)程序設(shè)計這一目標(biāo)。我早在2009年就開始將OJ系統(tǒng)作為練習(xí)平臺引入到信息類本科專業(yè)的C程序設(shè)計課程教學(xué)中,得到了學(xué)生和同行的好評與認(rèn)可。目前,將OJ作為程序設(shè)計教學(xué)練習(xí)平臺的做法在越來越多的學(xué)校的程序設(shè)計教學(xué)中得到運(yùn)用。 本書提供所有編程任務(wù)的描述、測試用例數(shù)據(jù)和標(biāo)程,并且不斷補(bǔ)充高質(zhì)量的編程任務(wù)作為練習(xí)或測試用。讀者(包括教師或?qū)W生)可在OJ上練習(xí)、實驗、測試和上機(jī)考試。如果您所在學(xué)校尚未建立OJ系統(tǒng),可自主開發(fā)OJ,也可利用開源系統(tǒng)部署自己的OJ,或者直接利用互聯(lián)網(wǎng)上開放的OJ系統(tǒng)。如果OJ上沒有想要練習(xí)的編程任務(wù),則需要先在OJ上添加它。歡迎使用湖南農(nóng)業(yè)大學(xué)程序設(shè)計在線練習(xí)系統(tǒng)(http://210.43.224.19/oj)。 本書適合作為本科低年級程序設(shè)計課程教材,也非常適合程序設(shè)計初學(xué)者自學(xué)使用。對參加奧林匹克信息學(xué)競賽的隊員和參加ACM/ICPC大學(xué)生程序設(shè)計競賽的隊員來說,也是一本非常好的入門教材。對于有一定程序設(shè)計基礎(chǔ)的讀者,本書也不失參考價值。書中有許多對程序深入的剖析很有啟發(fā)意義,值得一讀。 眾所周知,C程序設(shè)計課程是計算機(jī)類專業(yè)、信息類專業(yè)極其重要的專業(yè)基礎(chǔ)課。我從事本科程序設(shè)計專業(yè)基礎(chǔ)課一線教學(xué)十余年,希望能有一本讀起來不那么枯燥,同時又不失專業(yè)性和系統(tǒng)性的面向程序設(shè)計初學(xué)者的C語言圖書,這是我寫本書的意圖。如何利用本書,各位見仁見智。 希望通過本書帶給讀者更多愉悅的程序設(shè)計經(jīng)歷,提振編程信心,激發(fā)編程的興趣,為今后的學(xué)習(xí)、工作、科研培養(yǎng)良好的計算思維和軟件設(shè)計基礎(chǔ)。 本書的寫作是我將頭腦中紛繁的思緒變成有條理文字的過程,既艱辛又充滿快樂。常常為了設(shè)計一個恰到好處的編程任務(wù)或為了更好地表述某個概念,靈感突現(xiàn),即使是已臥床或半夜醒來,也立刻記錄,唯恐遺漏。本書力求知識更加系統(tǒng)、表述更加準(zhǔn)確、語言更加通俗、例子更加貼近生活,這使寫作過程充滿挑戰(zhàn)性,字句斟酌,直到自己滿意為止,以致成書過程如此漫長。對本書內(nèi)容安排、章節(jié)設(shè)置、設(shè)置每個例子代碼甚至每段表述,都經(jīng)過反復(fù)琢磨和權(quán)衡,力求語言描述精準(zhǔn)、思想表達(dá)透徹。漫長的成書過程,讓我體會到了寫書的不易,不過,本書寫作過程帶給我更多的是快樂。在寫作期間,不僅有將存在于腦海的點滴心得隨著鍵盤的敲擊變成文字的快感,而且,在此期間我的兒子不經(jīng)意間長成了帥小伙,陪伴他的時間總是短暫而歡快的。我的妻子雖常常擔(dān)心因長時伏案而有腰椎疾病的我,但她送來鍵盤旁的一杯熱茶、一碟水果,頓時讓我滿血復(fù)活。特別感謝我的妻子陳海燕女士包容我無數(shù)個日夜以計算機(jī)為伴而少有陪伴她,家務(wù)操持多勞她費(fèi)心,雖偶有抱怨,但忍韌而堅強(qiáng)。謹(jǐn)以此書獻(xiàn)給我的家人。 感謝電子工業(yè)出版社高等教育分社譚海平社長和冉哲編輯對我蝸牛般寫稿進(jìn)度的容忍。 感謝我的學(xué)生盧晨曦、邵振宇、王舒心、王鵬、陳慧、張洋、唐朝宇、廖顏勤、姚沛豐、熊嘉奇、唐航、周子翔、沈煜恒為本書的校對付出了辛勤勞動。 雖然我對本書寫作用心盡力,但由于學(xué)識水平有限,錯誤與不足之處在所難免,懇請批評指正(我的郵箱:390199309@qq.com)。 限于篇幅,本書第1章至第9章的綜合應(yīng)用實例和知識拓展部分以及附錄部分,以掃描二維碼下載相應(yīng)文檔的形式提供。 附錄: 賀細(xì)平
博士,國防科技大學(xué)計算機(jī)學(xué)院計算機(jī)應(yīng)用專業(yè)。湖南農(nóng)業(yè)大學(xué)信息科學(xué)技術(shù)學(xué)院電商系主任,副教授。中國計算機(jī)學(xué)會會員,湖南省高教學(xué)會計算機(jī)教育專業(yè)委員會會員。出版教材:現(xiàn)代計算機(jī)網(wǎng)絡(luò)系統(tǒng)原理及技術(shù)研究,中國商務(wù)出版社,2013年。
目 錄
第1章 邂逅程序設(shè)計初識C語言1 1.1 第一個程序我會算加法2 1.2 人機(jī)交互輸入和輸出函數(shù)的基本用法10 1.3 條件與判斷隨機(jī)應(yīng)變17 1.3.1 二叉分支的表達(dá)基本的if-else語句17 1.3.2 復(fù)合條件的表達(dá)22 1.4 利用庫函數(shù)拿來主義25 1.5 機(jī)器擅長之算術(shù)運(yùn)算計算機(jī)的老本行28 1.6 變量數(shù)據(jù)的棲身之所34 1.6.1 變量的概念34 1.6.2 變量的數(shù)據(jù)類型37 1.6.3 程序中的常量40 1.7 賦值運(yùn)算改變變量的值42 1.8 程序設(shè)計的一般過程47 本章小結(jié)48 第2章 程序邏輯之關(guān)鍵分支與循環(huán)51 2.1 機(jī)器智能與決策之基石分支結(jié)構(gòu)52 2.1.1 決策與分支結(jié)構(gòu)52 2.1.2 基本分支結(jié)構(gòu)及其連接方式60 2.1.3 邏輯運(yùn)算與復(fù)合條件表達(dá)71 2.1.4 if條件表達(dá)典型錯誤分析75 2.2 機(jī)器擅長之循環(huán)不厭其煩地重復(fù)77 2.2.1 for循環(huán)的引入78 2.2.2 剖析for循環(huán)86 2.2.3 必須應(yīng)用循環(huán)結(jié)構(gòu)的場合90 2.2.4 循環(huán)的初步運(yùn)用93 2.2.5 for循環(huán)常見錯誤分析96 2.3 程序邏輯進(jìn)階多分支和多重循環(huán)98 2.3.1 深入理解循環(huán)98 2.3.2 循環(huán)的連接100 2.3.3 雙重循環(huán)與多重循環(huán)107 2.3.4 break和continue的運(yùn)用110 2.3.5 分支與循環(huán)的串聯(lián)和嵌套120 2.4 其他形式分支與循環(huán)121 2.4.1 switch-case分支結(jié)構(gòu)121 2.4.2 while與do...while循環(huán)128 本章小結(jié)130 第3章 批量數(shù)據(jù)存儲與處理數(shù)組134 3.1 何時需要數(shù)組134 3.2 序列數(shù)據(jù)的處理一維數(shù)組135 3.2.1 一維數(shù)組的定義135 3.2.2 數(shù)組與內(nèi)存分配137 3.2.3 數(shù)組操作之演練140 3.2.4 一維數(shù)組的運(yùn)用141 3.2.5 巧用數(shù)組下標(biāo)149 3.3 表格型數(shù)據(jù)的處理二維數(shù)組154 3.3.1 二維數(shù)組的定義154 3.3.2 訪問二維數(shù)組的元素155 3.3.3 二維數(shù)組操作演練155 3.3.4 二維數(shù)組的應(yīng)用159 3.4 其他164 3.4.1 數(shù)組的拓展多維數(shù)組164 3.4.2 二維數(shù)組與一維數(shù)組的關(guān)系165 3.4.3 數(shù)組下標(biāo)越界165 3.4.4 數(shù)組定義時的大小能否為變量167 本章小結(jié)168 第4章 文本數(shù)據(jù)處理字符串169 4.1 字符數(shù)據(jù)存儲和處理169 4.1.1 字符的編碼169 4.1.2 字符數(shù)據(jù)的存儲173 4.1.3 字符數(shù)據(jù)的運(yùn)算173 4.2 字符串?dāng)?shù)據(jù)存儲和處理176 4.2.1 字符串的存儲176 4.2.2 文本型數(shù)據(jù)輸入/輸出177 4.2.3 字符串處理與庫函數(shù)180 4.3 文本型數(shù)據(jù)處理之演練190 4.4 其他193 4.4.1 空字符'\0'的作用193 4.4.2 字符和字符串的區(qū)別與聯(lián)系194 本章小結(jié)195 第5章 模塊化設(shè)計之利器函數(shù)196 5.1 初識函數(shù)設(shè)計197 5.2 函數(shù)的概念200 5.2.1 函數(shù)的概念剖析200 5.2.2 模塊化設(shè)計思想在函數(shù)中的體現(xiàn)203 5.3 新函數(shù)是如何煉成的206 5.4 函數(shù)的設(shè)計207 5.4.1 發(fā)掘任務(wù)中的模塊207 5.4.2 函數(shù)的定義207 5.4.3 設(shè)計函數(shù)的方法論209 5.4.4 設(shè)計函數(shù)的要點詳解211 5.5 函數(shù)的測試220 5.6 函數(shù)的交付使用221 5.6.1 函數(shù)的調(diào)用形式223 5.6.2 函數(shù)調(diào)用過程詳解224 5.6.3 函數(shù)參數(shù)的傳遞230 5.6.4 函數(shù)的聲明234 5.7 函數(shù)設(shè)計實踐236 5.8 函數(shù)的遞歸自相似之美249 5.8.1 初識遞歸函數(shù)250 5.8.2 遞歸函數(shù)設(shè)計的關(guān)鍵點253 5.8.3 遞歸調(diào)用的執(zhí)行過程262 5.8.4 二分法與遞歸264 5.8.5 遞歸與非遞歸273 5.8.6 提高遞歸效率281 5.9 函數(shù)相關(guān)主題287 5.9.1 局部變量與全局變量287 5.9.2 函數(shù)的嵌套定義的應(yīng)用289 5.9.3 如何生成隨機(jī)數(shù)289 5.9.4 庫函數(shù)295 5.9.5 初談提高程序效率295 本章小結(jié)299 第6章 內(nèi)存間接訪問之神器指針301 6.1 深入理解內(nèi)存地址302 6.1.1 內(nèi)存是什么302 6.1.2 什么是內(nèi)存地址302 6.2 間接訪問與直接訪問305 6.3 指針變量與普通變量309 6.3.1 指針變量的概念309 6.3.2 揭秘指針的由來310 6.3.3 普通變量與指針變量的對比311 6.4 指針與數(shù)組的天然聯(lián)系312 6.4.1 數(shù)組名與數(shù)組起始地址312 6.4.2 揭秘訪問數(shù)組的更多細(xì)節(jié)313 6.5 指針的移動319 6.6 地址值在函數(shù)調(diào)用中的特殊作用331 6.6.1 函數(shù)調(diào)用過程詳解331 6.6.2 指針作為函數(shù)參數(shù)334 6.6.3 數(shù)組名作為函數(shù)實參341 6.6.4 可接受地址值的形參類型探究349 6.7 指針與動態(tài)內(nèi)存分配352 6.7.1 一維數(shù)組的動態(tài)內(nèi)存分配354 6.7.2 二維及多維數(shù)組與指針357 6.7.3 多階指針370 6.7.4 返回值為指向動態(tài)分配空間的指針370 6.8 變量的存儲區(qū)、作用范圍與生命期371 6.8.1 靜態(tài)變量和全局變量372 6.8.2 進(jìn)程內(nèi)存地址空間布局376 6.8.3 變量的作用范圍、生命期和存儲區(qū)379 6.8.4 extern的用法382 6.9 函數(shù)也可作為參數(shù)函數(shù)指針與應(yīng)用384 6.9.1 函數(shù)指針的概念384 6.9.2 函數(shù)指針數(shù)組的運(yùn)用387 6.9.3 函數(shù)指針與qsort( )函數(shù)的應(yīng)用388 本章小結(jié)396 第7章 創(chuàng)造新數(shù)據(jù)類型結(jié)構(gòu)體類型399 7.1 為何引入結(jié)構(gòu)體類型399 7.2 結(jié)構(gòu)體類型的定義和基本用法402 7.2.1 結(jié)構(gòu)體類型的定義402 7.2.2 結(jié)構(gòu)體類型的基本用法406 7.3 結(jié)構(gòu)體類型數(shù)組的用法409 7.4 結(jié)構(gòu)體類型在函數(shù)中的運(yùn)用411 7.4.1 結(jié)構(gòu)體類型在函數(shù)中的一般用法411 7.4.2 結(jié)構(gòu)體類型數(shù)組的排序420 7.5 結(jié)構(gòu)體類型與鏈表431 7.5.1 鏈表的概念和用途431 7.5.2 鏈表432 7.5.3 為什么需要鏈表439 7.5.4 循環(huán)單鏈表及其應(yīng)用440 本章小結(jié)447 第8章 數(shù)據(jù)持久化文件448 8.1 文件的基本概念449 8.1.1 文件的紙帶模型449 8.1.2 緩沖文件讀/寫過程模型451 8.1.3 讀/寫文件基本流程與文件指針452 8.1.4 文件打開方式454 8.2 文件的讀/寫454 8.2.1 文本文件的讀/寫454 8.2.2 二進(jìn)制文件讀/寫459 8.3 文件讀/寫位置的定位466 8.4 文本文件與二進(jìn)制文件的對比470 8.5 其他主題475 8.5.1 關(guān)于stdin、stdout、stderr475 8.5.2 標(biāo)準(zhǔn)輸入、輸出的重定向476 8.5.3 理解和運(yùn)用stderr與stdout478 8.5.4 fflush( )函數(shù)的用法479 8.5.5 EOF的運(yùn)用481 8.5.6 容易被誤解的feof( )函數(shù)482 8.5.7 fgets( )與gets( )的區(qū)別484 本章小結(jié)485 第9章 深入到bit的運(yùn)算位運(yùn)算487 9.1 位運(yùn)算的運(yùn)算符487 9.2 初識位運(yùn)算488 9.3 位運(yùn)算的應(yīng)用489 9.4 位運(yùn)算的注意事項505 9.4.1 右移的補(bǔ)位方式505 9.4.2 移位量的取模特性506 9.4.3 位運(yùn)算的數(shù)據(jù)類型507 9.5 位域509 本章小結(jié)510
你還可能感興趣
我要評論
|