c語言學(xué)習(xí)(前四章)_第1頁
c語言學(xué)習(xí)(前四章)_第2頁
c語言學(xué)習(xí)(前四章)_第3頁
c語言學(xué)習(xí)(前四章)_第4頁
c語言學(xué)習(xí)(前四章)_第5頁
已閱讀5頁,還剩83頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、第一章 c語言概述第一節(jié)C語言的發(fā)展過程前言:語言是在 70 年代初問世的。一九七八年由美國電話電報公司(AT&T)貝爾實驗室正式發(fā)表了語言。同時由B.W.Kernighan和D.M.Ritchit合著了著名的“THE C PROGRAMMING LANGUAGE”一書。通常簡稱為K&R,也有人稱之為K&R標(biāo)準(zhǔn)。但是,在K&R中并沒有定義一個完整的標(biāo)準(zhǔn)C 語言,后來由美國國家標(biāo)準(zhǔn)協(xié)會(American National Standards Institute)在此基礎(chǔ)上制定了一個C 語言標(biāo)準(zhǔn),于一九八三年發(fā)表。通常稱之為ANSI C。C語言之父里奇在學(xué)習(xí)C語言之前,我們先了解一下C語言的歷史。

2、C語言是一門通用的,模塊化,程序化的編程語言,被廣泛應(yīng)用于操作系統(tǒng)和應(yīng)用軟件的開發(fā)。由于其高效和可移植性,適應(yīng)于不同硬件和軟件平臺,深受開發(fā)員的青睞。C語言早期發(fā)展 1969 - 1973年在 AT&T 貝爾實驗室開始了 C語言的最初研發(fā)。根據(jù) C語言的發(fā)明者丹尼斯.里奇 (Dennis Ritchie) 說,C 語言最重要的研發(fā)時期是在 1972 年。C語言之所以命名為C,是因為 C語言源自 Ken Thompson 發(fā)明的 B語言,而 B語言則源自 BCPL語言。C語言的誕生是和UNIX操作系統(tǒng)的開發(fā)密不可分的,原先的 UNIX操作系統(tǒng)都是用匯編語言寫的,1973年 UNIX操作系統(tǒng)的核心

3、用C語言改寫,從此以后,C語言成為編寫操作系統(tǒng)的主要語言。K&R C 1978年, Brian Kernighan 和 Dennis Ritchie 出版了一本書,名叫The C Programming Language(中文譯名為C程序設(shè)計語言)。這本書被 C語言開發(fā)者們稱為K&R,很多年來被當(dāng)作 C語言的非正式的標(biāo)準(zhǔn)說明。人們稱這個版本的 C語言為K&R C。1988年 Brian Kernighan 和 Dennis Ritchie 修改此書,出版了The C Programming Language第二版,第二版涵蓋了ANSI C語言標(biāo)準(zhǔn)。第二版從此成為大學(xué)計算機教育有關(guān)C語言的經(jīng)典教

4、材,多年后也沒再出現(xiàn)過更好的版本。ANSI C 1970到80年代,C語言被廣泛應(yīng)用,從大型主機到小型微機,也衍生了C語言的很多不同版本。為統(tǒng)一C語言版本,1983年美國國家標(biāo)準(zhǔn)局 (American National Standards Institute,簡稱ANSI)成立了一個委員會,來制定 C語言標(biāo)準(zhǔn)。1989年 C語言標(biāo)準(zhǔn)被批準(zhǔn),被稱為 ANSI X3.159-1989 Programming Language C。這個版本的C語言標(biāo)準(zhǔn)通常被稱為ANSI C。目前,幾乎所有的開發(fā)工具都支持ANSI C標(biāo)準(zhǔn)。是C語言用得最廣泛的一個標(biāo)準(zhǔn)版本。C99 在ANSI C 標(biāo)準(zhǔn)確立之后,C語言

5、的規(guī)范在很長一段時間內(nèi)都沒有大的變動。1995年 WG14小組對 C語言進行了一些修改,成為后來的 1999年發(fā)布的 ISO/IEC 9899:1999標(biāo)準(zhǔn),通常被成為 C99。 但是各個公司對 C99的支持所表現(xiàn)出來的興趣不同。當(dāng)GCC和其它一些商業(yè)編譯器支持C99的大部分特性的時候,微軟和 Borland卻似乎對此不感興趣。C 語言對其它語言的影響 很多編程語言都深受 C語言的影響,比如C+(原先是C語言的一個擴展),C#,Java,PHP, Javascript, Perl,LPC 和 UNIX 的C Shell。也正因為 C語言的影響力,掌握 C語言的人,再學(xué)其它編程語言,大多能很快上

6、手,觸類旁通。接下來,我們開始具體講解C語言。要學(xué)好一門編程語言,一定要邊學(xué)邊練,你要有一個 C語言的開發(fā)工具,在此教程中,我們使用微軟的Visual Studio 開發(fā)C語言程序。第二節(jié) C語言是當(dāng)代最優(yōu)秀的程序設(shè)計語言早期的C 語言主要是用于UNIX系統(tǒng)。由于語言的強大功能和各方面的優(yōu)點逐漸為人們認(rèn)識,到了八十年代,C開始進入其它操作系統(tǒng),并很快在各類大、中、小和微型計算機上得到了廣泛的使用,成為當(dāng)代最優(yōu)秀的程序設(shè)計語言之一。下面,介紹一下C語言的優(yōu)秀之處:1. 語言簡潔,使用方便靈活 C語言是現(xiàn)有程序設(shè)計語言中規(guī)模最小的語言之一,而小的語言體系往往能設(shè)計出較好的程序。C語言的關(guān)鍵字很少,

7、ANSI C標(biāo)準(zhǔn)一共只有32個關(guān)鍵字,9種控制語句,壓縮了一切不必要的成份。C語言的書寫形式比較自由,表達方法簡潔,使用一些簡單的方法就可以構(gòu)造出相當(dāng)復(fù)雜的數(shù)據(jù)類型和程序結(jié)構(gòu)。2. 可移植性好 用過匯編語言的讀者都知道,即使是功能完全相同的一種程序,對于不同的單片機,必須采用不同的匯編語言來編寫。這是因為匯編語言完全依賴于單片機硬件。而現(xiàn)代社會中新器件的更新?lián)Q代速度非??欤苍S我們每年都要跟新的單片機打交道。如果每接觸一種新的單片機就要學(xué)習(xí)一次新的匯編語言,那么也許我們將一事無成,因為每學(xué)一種新的匯編語言,少則幾月,多則上年,那么我們還有多少時間真正用于產(chǎn)品開發(fā)呢?C語言是通過編譯來得到可執(zhí)行

8、代碼的,統(tǒng)計資料表明,不同機器上的C語言編譯程序80%的代碼是公共的,C語言的編譯程序便于移植,從而使在一種單片機上使用的C語言程序,可以不加修改或稍加修改即可方便地移植到另一種結(jié)構(gòu)類型的單片機上去。這大大增強了我們使用各種單片機進行產(chǎn)品開發(fā)的能力。3. 表達能力強 C語言具有豐富的數(shù)據(jù)結(jié)構(gòu)類型,可以根據(jù)需要采用整型、實型、字符型、數(shù)組類型、指針類型、結(jié)構(gòu)類型、聯(lián)合類型、枚舉類型等多種數(shù)據(jù)類型來實現(xiàn)各種復(fù)雜數(shù)據(jù)結(jié)構(gòu)的運算。C語言還具有多種運算符,靈活使用各種運算符可以實現(xiàn)其他高級語言難以實現(xiàn)的運算。4. 表達方式靈活 利用C語言提供的多種運算符,可以組成各種表達式,還可采用多種方法來獲得表達式

9、的值,從而使用戶在程序設(shè)計中具有更大的靈活性。C語言的語法規(guī)則不太嚴(yán)格,程序設(shè)計的自由度比較大,程序的書寫格式自由靈活。程序主要用小寫字母來編寫,而小寫字母是比較容易閱讀的,這些充分體現(xiàn)了C語言靈活、方便和實用的特點。5. 可進行結(jié)構(gòu)化程序設(shè)計 C語言是以函數(shù)作為程序設(shè)計的基本單位的,C語言程序中的函數(shù)相當(dāng)于匯編語言中的子程序。C語言對于輸入和輸出的處理也是通過函數(shù)調(diào)用來實現(xiàn)的。各種C語言編譯器都會提供一個函數(shù)庫,其中包含有許多標(biāo)準(zhǔn)函數(shù),如各種數(shù)學(xué)函數(shù)、標(biāo)準(zhǔn)輸入輸出函數(shù)等。此外C語言還具有自定義函數(shù)的功能,用戶可以根據(jù)自己的需要編制滿足某種特殊需要的自定義函數(shù)。實際上C語言程序就是由許多個函數(shù)

10、組成的,一個函數(shù)即相當(dāng)于一個程序模塊,因此C語言可以很容易地進行結(jié)構(gòu)化程序設(shè)計。6. 可以直接操作計算機硬件 C語言具有直接訪問單片機物理地址的能力,可以直接訪問片內(nèi)或片外存儲器,還可以進行各種位操作。7. 生成的目標(biāo)代碼質(zhì)量高 眾所周知,匯編語言程序目標(biāo)代碼的效率是最高的,這就是為什么匯編語言仍是編寫計算機系統(tǒng)軟件的重要工具的原因。但是統(tǒng)計表明,對于同一個問題,用C語言編寫的程序生成代碼的效率僅比用匯編語言編寫的程序低10%20%。盡管C語言具有很多的優(yōu)點,但和其他任何一種程序設(shè)計語言一樣也有其自身的缺點,如不能自動檢查數(shù)組的邊界,各種運算符的優(yōu)先級別太多,某些運算符具有多種用途等。但總的來

11、說,C語言的優(yōu)點遠遠超過了它的缺點。經(jīng)驗表明,程序設(shè)計人員一旦學(xué)會使用C語言之后,就會對它愛不釋手,尤其是單片機應(yīng)用系統(tǒng)的程序設(shè)計人員更是第三節(jié) C語言版本概述目前最流行的語言有以下幾種:1、Microsoft C 或稱 MS C2、Borland Turbo C 或稱 Turbo C3、AT&T C這些語言版本不僅實現(xiàn)了ANSI C標(biāo)準(zhǔn),而且在此基礎(chǔ)上各自作了一些擴充,使之更加方便、完美。ISO發(fā)布C語言標(biāo)準(zhǔn)新版本 ISO(International Organization for Standardization)于2011年4月正式公布C語言新的國際標(biāo)準(zhǔn)草案。之前被命名為C1X的新標(biāo)準(zhǔn)將

12、被稱為ISO/IEC 9899:2011。新的標(biāo)準(zhǔn)修訂了C11版本,提高了對C+的兼容性,并將新的特性增加到C語言中。新功能包括支持多線程, 基于ISO/IEC TR 19769:2004規(guī)范下支持Unicode,提供更多用于查詢浮點數(shù)類型特性的宏定義和靜態(tài)聲明功能。根據(jù)草案規(guī)定,最新發(fā)布的標(biāo)準(zhǔn)草案修訂了許多特性,支持當(dāng)前的編譯器。今年10月份,ISO ITTF(Information Technology Task Force)開始接手最終草案審查,對此未發(fā)表任何評論。 該草案的修改是基于2011年4月通過的N1570 draftPDF。 第四節(jié) C語言的特點1、C語言簡潔、緊湊,使用方便、

13、靈活。 ANSI C一共只有32個關(guān)鍵字: 1、auto2、break3、case4、char5、const6、continue7、default8、do9、double10、else11、enum12、extern13、float14、for15、goto16、if17、int18、long19、register20、return21、short22、signed23、static24、sizeof25、struct26、switch27、typedef28、union29、unsigned30、void31、volatile32、while 9種控制語句,程序書寫自由,主要用小寫字母表示,

14、壓縮了一切不必要的成分。 Turbo C擴充了11個關(guān)鍵字:asm _cs _ds _es _ss cdecl far huge interrupt near pascal注意:在C語言中,關(guān)鍵字都是小寫的。2、運算符豐富。 共有34種。C把括號、賦值、逗號等都作為運算符處理。從而使C的運算類型極為豐富,可以實現(xiàn)其他高級語言難以實現(xiàn)的運算。3、數(shù)據(jù)結(jié)構(gòu)類型豐富。4、具有結(jié)構(gòu)化的控制語句。5、語法限制不太嚴(yán)格,程序設(shè)計自由度大。6、C語言允許直接訪問物理地址,能進行位(bit)操作,能實現(xiàn)匯編語言的大部分功能,可以直接對硬件進行操作。因此有人把它稱為中級語言。7、生成目標(biāo)代碼質(zhì)量高,程序執(zhí)行效率

15、高。8、與匯編語言相比,用C語言寫的程序可移植性好。但是,C語言對程序員要求也高,程序員用C寫程序會感到限制少、靈活性大,功能強,但較其他高級語言在學(xué)習(xí)上要困難一些。 第五節(jié) C語言面向?qū)ο蟮某绦蛟O(shè)計語言首先介紹面向?qū)ο缶幊獭C嫦驅(qū)ο缶幊蹋∣bject Oriented Programming,OOP,面向?qū)ο蟪绦蛟O(shè)計)是一種計算機編程架構(gòu)。OOP 的一條基本原則是計算機程序是由單個能夠起到子程序作用的單元或?qū)ο蠼M合而成。OOP 達到了軟件工程的三個主要目標(biāo):重用性、靈活性和擴展性。為了實現(xiàn)整體運算,每個對象都能夠接收信息、處理數(shù)據(jù)和向其它對象發(fā)送信息。面向?qū)ο蟪绦蛟O(shè)計中的概念主要包括:對象、

16、類、數(shù)據(jù)抽象、繼承、動態(tài)綁定、數(shù)據(jù)封裝、多態(tài)性、消息傳遞。通過這些概念面向?qū)ο蟮乃枷氲玫搅司唧w的體現(xiàn)。 1)對象 對象是運行期的基本實體,它是一個封裝了數(shù)據(jù)和操作這些數(shù)據(jù)的代碼的邏輯實體。 2)類 類是具有相同類型的對象的抽象。一個對象所包含的所有數(shù)據(jù)和代碼可以通過類來構(gòu)造。 3)封裝 封裝是將數(shù)據(jù)和代碼捆綁到一起,避免了外界的干擾和不確定性。對象的某些數(shù)據(jù)和代碼可以是私有的,不能被外界訪問,以此實現(xiàn)對數(shù)據(jù)和代碼不同級別的訪問權(quán)限。 4)繼承 繼承是讓某個類型的對象獲得另一個類型的對象的特征。通過繼承可以實現(xiàn)代碼的重用:從已存在的類派生出的一個新類將自動具有原來那個類的特性,同時,它還可以擁有

17、自己的新特性。 5)多態(tài) 多態(tài)是指不同事物具有不同表現(xiàn)形式的能力。多態(tài)機制使具有不同內(nèi)部結(jié)構(gòu)的對象可以共享相同的外部接口,通過這種方式減少代碼的復(fù)雜度。 6)動態(tài)綁定 綁定指的是將一個過程調(diào)用與相應(yīng)代碼鏈接起來的行為。動態(tài)綁定是指與給定的過程調(diào)用相關(guān)聯(lián)的代碼只有在運行期才可知的一種綁定,它是多態(tài)實現(xiàn)的具體形式。7)消息傳遞 對象之間需要相互溝通,溝通的途徑就是對象之間收發(fā)信息。消息內(nèi)容包括接收消息的對象的標(biāo)識,需要調(diào)用的函數(shù)的標(biāo)識,以及必要的信息。消息傳遞的概念使得對現(xiàn)實世界的描述更容易。8)方法 方法(Method)是定義一個類可以做的,但不一定會去做的事。在C的基礎(chǔ)上,一九八三年又由貝爾實

18、驗室的Bjarne Strou-strup推出了C+。 C+進一步擴充和完善了語言,成為一種面向?qū)ο蟮某绦蛟O(shè)計語言。C+目前流行的最新版本是Borland C+,Symantec C+和Microsoft VisualC+。C+提出了一些更為深入的概念,它所支持的這些面向?qū)ο蟮母拍钊菀讓栴}空間直接地映射到程序空間,為程序員提供了一種與傳統(tǒng)結(jié)構(gòu)程序設(shè)計不同的思維方式和編程方法。因而也增加了整個語言的復(fù)雜性,掌握起來有一定難度。第六節(jié) C語言和C+的區(qū)別與對比C是C+的基礎(chǔ),C+語言和語言在很多方面是兼容的。因此,掌握了語言,再進一步學(xué)習(xí)C+就能以一種熟悉的語法來學(xué)習(xí)面向?qū)ο蟮恼Z言,從而達到事半功倍的目的。差不多是win8跟wi

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論