1、C語言簡(jiǎn)介
現(xiàn)今主流語言C++與Java—都建立在C語言的語法和基本結(jié)構(gòu)的基礎(chǔ)上籽慢。
C語言是一種通用的程序設(shè)計(jì)語言犯助,其特點(diǎn)包括簡(jiǎn)潔的表達(dá)式栗竖、流行的控制流和數(shù)據(jù)結(jié)構(gòu)暑脆、豐富的運(yùn)算符集等。
C語言并不受限于任何一種操作系統(tǒng)或機(jī)器狐肢,并不專用于某一領(lǐng)域添吗,C語言的限制少,通用性強(qiáng)份名,這使得它比一些公認(rèn)為功能強(qiáng)大的語言使用更方便碟联、效率更高。
C語言最初是由Dennis Ritchie為UNIX操作系統(tǒng)設(shè)計(jì)的僵腺,UNIX操作系統(tǒng)鲤孵、C編譯器和幾乎所有的UNIX應(yīng)用程序都是用C語言編寫的。
C語言提供了很多數(shù)據(jù)類型辰如。其基本類型包括字符普监、具有多種長(zhǎng)度的整型和浮點(diǎn)數(shù)等。另外,還有通過指針凯正、數(shù)組毙玻、結(jié)構(gòu)和聯(lián)合派生的各種數(shù)據(jù)類型。表達(dá)式由運(yùn)算符和操作數(shù)組成廊散。任何一個(gè)表達(dá)式桑滩,包括賦值表達(dá)式
或函數(shù)調(diào)用表達(dá)式,都可以是一個(gè)語句允睹。指針提供了與具體機(jī)器無關(guān)的地址算術(shù)運(yùn)算运准。C語言為實(shí)現(xiàn)結(jié)構(gòu)良好的程序提供了基本的控制流結(jié)構(gòu);語句組擂找、條件判斷(if-else)、多路選擇(switch)浩销、終止測(cè)試在頂部的循環(huán)(while贯涎、for)、終止測(cè)試在底部的循環(huán)(do)慢洋、提前跳出循環(huán)(break)等塘雳。
函數(shù)可以返回基本類型、結(jié)構(gòu)普筹、聯(lián)合或指針關(guān)型的值败明。任何函數(shù)都可以遞歸調(diào)用。局部變量通常是“自動(dòng)的”太防,即在每次函數(shù)調(diào)用時(shí)重新創(chuàng)建妻顶。函數(shù)定義可以不是嵌套的,但可以用塊結(jié)構(gòu)的方式聲明變量蜒车。一個(gè)C語言程序的不同函數(shù)可以出現(xiàn)在多個(gè)單獨(dú)編譯的不同源文件中讳嘱。變量可以只在函數(shù)內(nèi)部有效,也可以在函數(shù)外部但僅在一個(gè)源文件中有效酿愧,還可以在整個(gè)程序中都有效沥潭。
編譯的預(yù)處理階段將對(duì)程序文本進(jìn)行宏替換、包含其他源文件以及進(jìn)行條件編譯嬉挡。
C語言是一種相對(duì)“低級(jí)”的語言钝鸽,這就意味著C語言可以處理大部分計(jì)算機(jī)能夠處理的對(duì)象,比如字符庞钢、數(shù)字和地址拔恰。這些對(duì)象可以通過具體機(jī)器實(shí)現(xiàn)的算術(shù)運(yùn)算符和邏輯運(yùn)算符組合在一起并移動(dòng)。
C語言不提供直接處理諸如字符事基括、集合仁连、列表成數(shù)組等復(fù)合對(duì)象的操作。雖然可以將整個(gè)結(jié)構(gòu)作為一個(gè)單元進(jìn)行拷貝,但C語言沒有處理整個(gè)數(shù)組或字符串的操作饭冬。除了由函數(shù)的局部變量提供的靜態(tài)定義和堆棧外使鹅,C語言沒有定義任何存儲(chǔ)器分配工具,也不提供堆和無用內(nèi)存回收工具昌抠。最后患朱,C落言本身沒有提供輸入/輸出功能,沒有READ或WRITE語句炊苫,也沒有內(nèi)置的又件訪問方法裁厅。所有這些高層的機(jī)制必須由顯式調(diào)用的函數(shù)提供。C語言的大部分實(shí)現(xiàn)已合理地包含了這些函數(shù)的標(biāo)準(zhǔn)集合侨艾。
類似地执虹,C語言只提供簡(jiǎn)單的單線程控制流,即測(cè)試唠梨、循環(huán)袋励、分組和子程序,它不提供多道程序設(shè)計(jì)当叭、并行操作茬故、同步和協(xié)同例程。
盡管缺少其中的某些物性看起來好像是一個(gè)嚴(yán)重不足(“這就意味著必須通過調(diào)用函數(shù)來比較兩個(gè)字符串嗎?”)蚁鳖,但是把語言保持在一個(gè)適度的規(guī)模會(huì)有很多益處磺芭。
對(duì)大部分程序員來說,最重要的變化是函數(shù)聲明和函數(shù)定義的新語法∽砘現(xiàn)在钾腺,函數(shù)聲明中可以包含描述函數(shù)實(shí)際參數(shù)的信息;相應(yīng)地讥裤,定義的語法也做了改變垮庐。這些附加的信息使編澤器很容易檢測(cè)到因參數(shù)不匹配而導(dǎo)致的錯(cuò)誤。將廣泛使用的結(jié)構(gòu)賦值和枚舉定義為語言的正式組成部分坞琴;可以進(jìn)行單精度的浮點(diǎn)運(yùn)算哨查;明確定義了算術(shù)運(yùn)算的屬性,特別是無符號(hào)類型的運(yùn)算剧辐;對(duì)預(yù)處理器進(jìn)行了更詳盡的說明寒亥。
2、章節(jié)內(nèi)容
-
第1章將對(duì)C語言的核心部分進(jìn)行簡(jiǎn)要介紹荧关。
實(shí)際編寫程序才是學(xué)習(xí)一種新語言的好方法溉奕。 本書的中心目的并不是介紹數(shù)據(jù)結(jié)構(gòu)和算法,而是專注于講解語言本身忍啤。
第2章到第6章將更詳細(xì)地討論C語言的各種特性加勤,其中的重點(diǎn)將放在完整的程序例子上仙辟。
第2章介紹基本的數(shù)據(jù)類型、運(yùn)算符和表達(dá)式鳄梅。
第3章介紹控制流叠国,如if-else、switch戴尸、while和for等粟焊。
第4章介紹函數(shù)和程序結(jié)構(gòu)——外部變量、作用域規(guī)則和多源文件等孙蒙,同時(shí)還會(huì)講述一些預(yù)處理器的知識(shí)项棠。
第5章介紹指針和地址運(yùn)算。
第6章介紹結(jié)構(gòu)和聯(lián)合挎峦。
-
第7章介紹標(biāo)準(zhǔn)庫(kù)香追。標(biāo)準(zhǔn)庫(kù)提供了一個(gè)與操作系統(tǒng)交互的公用接口。
這個(gè)函數(shù)庫(kù)是由ANSI標(biāo)準(zhǔn)定義的坦胶,這就意味著所有支持C語言的機(jī)器都會(huì)支持它透典, 因此,使用這個(gè)庫(kù)執(zhí)行輸入迁央、輸出或其他訪問操作系統(tǒng)的操作的程序可以不加修改地運(yùn)行在不同機(jī)器上掷匠。
-
第8章介紹C語言程序和UNIX操作系統(tǒng)之間的接口滥崩,我們將把重點(diǎn)放在輸入/輸出岖圈、文件系統(tǒng)和存儲(chǔ)分配上。
盡管本章中的某些內(nèi)容是針對(duì)UNDX系統(tǒng)所寫的钙皮,但是使用其他系統(tǒng)的程序員仍然會(huì)從中獲益蜂科,
比如深入了解如何實(shí)現(xiàn)標(biāo)準(zhǔn)庫(kù)及有關(guān)可移植性方面的一些建議。