NO IMAGE

哈嘍!我是甜筒科技【Aice】的大蟲,首先先簡單的談談本人對這本書的一些看法吧,剛剛從圖書館看到這本書的時候就感覺和其他書不一樣,除了厚以外,簡介的封面設計也吸引到了我。ps:為什麼說感覺和其他書不一樣呢,其實是有原因的,因為周圍的書全是c語言程式設計,換湯不換藥。但是這本書後面加了一個現代方法。哈哈,可能是筆者的一點點小偏見吧,但是確實是他的封面,厚度和這句話緊緊的吸引住了我的眼球。廢話就不多說了,現在就開始感受它能帶給我哪些絕學吧!

這本書是美國譯過來的,首先我應該感謝翻譯這本書的呂秀鋒和黃倩兩位老師,我覺得稱呼為老師也是應該的吧,習慣這樣叫了哈哈。就我自己而言,英語簡直是渣的一塌糊塗,人們經常說扶不起的阿斗,這樣比起來,自我覺得我連阿斗都不如。可能是不夠勤奮再加上天生對語言愚鈍的緣故吧,所以英語一直是我的硬傷。希望看了我的讀書筆記的童鞋們不要像我,畢竟多一門技能總是好的。

這本書總共有27個章節,和普通的其他計算機語言書籍一樣,作者用了13章的文筆來介紹c語言的一些基礎知識(ps:在筆者看來是這樣的,因為之前看過的程式設計書籍都是這些內容,而後面的一些章節講解的知識基本上沒有看到,或者是一筆帶過。所以暫且這樣劃分吧,希望各位大神不要吐槽,畢竟我也只是個剛剛修煉各種語言的渣渣),後面,也就是從14章過後就是介紹一些對於我來說還掌握不是很透徹的知識。那麼現在我開始記錄1-13章的讀書筆記,統一稱作基礎部分,主要是查漏補缺的目的,讓我在瞭解的基礎上能更加深入的瞭解。

第一章:c語言概述,這一章主要講的就是一些關於c語言是怎麼來的呀,c語言有什麼優缺點呀,如何高效的使用c呀巴拉巴拉的東西。在這裡就不累述了,如果想認真看這本書,筆者還是挺推薦的。

第二章:c語言基本概念,在我印象裡面,幾乎所有的c語言程式設計資料,也包括其他的計算機語言書籍,基本上第一個程式都是:“hello world”,也是這個程式帶領我們進入了c語言的奇妙世界。但是在這裡值得注意的是,我在這本書上面居然知道這個程式是一個很有名氣的程式,同時還有作者,他們是:Kernighan和Ritchie兩位大神,好吧其實我也不太清楚這兩位大神的偉大事蹟,但是先記下吧由於現在任務實在是繁重,再加上回家後沒有網路讓我去進一步瞭解更對,只能先記有時間再去了解。然後這本書把一個c語言程式的實現過程講了一下,在這裡我也說說:一個c語言程式想要執行是還需要進一步處理的,也就是編譯和連結,編譯的作用是把我們寫好的程式編譯成計算機認識的機器指令(0100101這種,最近也在看一些彙編資料,有所瞭解。對了,是記得沒錯的情況下$笑哭$,我的記心不太好),要知道我們現在學的這本書是c語言,一種高階語言,計算機無法識別。編譯完成之後便是連結,這一步也是最後一步,順便說說在這個過程中分成了三個必須的步驟即:預處理、編譯和連結。連結指的是利用連結器把編譯器編譯的目的碼和和其他所需的附加程式碼整合在一起,這些附加程式碼包括程式中提到的庫函式。這樣,一個可以執行的c程式就完成了。

接下來,作者又詳解了簡單程式的一般形式,包括:指令,函式,語句和顯示字串。值得注意的是,接下來作者居然還詳細的講解了註釋方法,ps:真是一個細心的作者。變數和賦值,讀入輸入定義常量,識別符號和程式的規範書寫。這些東西都有在其他資料看過,但是不得不承認這位作者是一個細心的人。對了這裡我想還想記錄的是識別符號,這個知識點對我來說還比較陌生,識別符號…………,這樣吧,我直接把書上的原文摘抄下來,以後我忘了也好及時複習,哈哈:在編寫程式時,需要對變數,函式,巨集和其他實體進行命名。這些名字成為識別符號(identifier)。在C語言中,識別符號可以含有字母,數字和下劃線,但必須以字母或者下劃線開頭。例如:times10 get_next_char _done   這樣是合法的。如果這樣:10times get-next-char     這樣是不合法的,因為符號10times 是以數字開頭的,符號get-net-char 包含了減號,而不是下劃線。下劃線具體的使用方法和用處請詳細的尋找資料,這裡就不累述了。

第三章:格式化輸入/輸出,這一章講的就是兩個標準函式,一個是printf,另一個是scanf。書中詳細的介紹了這兩個函式的用法和相應的注意事項。

第四章:表示式,什麼是表示式呢,在數學上我們稱一個能實現某種運算解決某種問題的數學式子稱為表示式。才C語言中,表示式的意義也是差不多,那麼首先需要了解的就是算術運算子啦,因為它是構成表示式的基本單元之一。然後就是算術運算子的優先順序和結合性,這裡講了每一種算術運算子中優先順序數,需要注意的是不止是算術運算子具有優先順序,其他的運算子也同樣具有優先順序,比如非運算“!”的優先順序是2,*和/的優先順序是3等。接下來介紹了一些運算方法,比如符合運算(i=i 3),自增運算和自減運算等。

第五章:選擇語句,說到c語言中的選擇語句,讓我第一個想到的便是if-else語句,在我印象裡面也是我第一個瞭解的c語言語句,記得還是在高中數學書上得知的,然後便是switch語句。這一章中除了介紹了這兩種選擇語句之外,還詳細的介紹了其他相關的表示式,比如邏輯表示式,邏輯表示式又可以分為關係運算子和判斷運算子,關係運算子包括:<,>,<=,>=分別表示了數學上的小於,大於,小於等於和大於等於。值得注意的是關係運算子的優先順序低於算術運算子。判斷運算子包括==和!=兩種,一般用在if,while等表示式中做判斷用。邏輯表示式包括邏輯與,邏輯或和邏輯非,分別用符號:&&,||,!。注意:邏輯運算產生的結果只有0和1,邏輯運算子將任何非零運算元作為真摯來處理,同時將任何零值運算元作為假值來處理。這裡,作者提到了“短路”運算子,那什麼是“短路”運算子呢?運算子||和&&都是對運算元進行“短路”運算,這些運算子先計算出左運算元的值,再計算出右運算元值;如果運算元的值可由左運算元的值直接推出,那麼將不計算右運算元的值。比如:(i!=0)&&(j/i>0),如果i不等於0,則計算右邊括號的值,再進行判斷,如果i等於0,則表示式直接為假。

第六章:迴圈,當然,當談起c語言中的迴圈時,和前面一章類似的讓我第一個想到的便是while啦,這一章中,作者按照介紹迴圈和退出迴圈的方式來進行講解。首先說到迴圈,迴圈語句包括while語句,do-while語句和for語句,while語句和do-while語句的區別在於,while語句是先判斷是否滿足條件才執行所包含的語句,而do-while語句則是先執行所包含的語句再判斷是否滿足條件,看似一個很簡單的區別,但是在一些程式中卻能出現天壤之別的結果。for語句中值得注意的是逗號表示式,逗號表示式簡單的說就是把在for語句以外的初始化語句包含到for語句之內來,看下面的例子:

sum = 0;

for(i=0;i<=N;i )

sum  = i ;

等同於:

for(sum = 0 ,i = 0 ;i<=N;i )

sum  =i;

退出迴圈,迴圈語句包括break語句,continue語句和goto語句,break語句是跳出迴圈,continue語句是跳轉到迴圈之內的其他地方,goto語句是跳轉到指定的地方。

第七章:基本型別,這一章講的是資料型別,資料型別包括整型型別,浮點型別,字元型別和算術型別。整型型別包括int整型,長整型long int 短整型short int 等,浮點型別包括單精度浮點型:float,雙精度浮點型:double和擴充套件精度浮點數:long double。字元型別的唯一基本型別是char型別,算術型別包括整數型別和浮點型別。字元型別中的轉義序列又包括字元轉義序列和數字轉移序列,如:\a表示警報符,\b 表示回退符,\f 表示換頁符,\n表示換行符等都是轉義序列。sizeof運算子,這個運算子之前我是沒有接觸過的,也可能接觸過但是忘了,總之現在要重新瞭解一下,sizeof運算子的表示式是:sizeof(型別名),簡單的來說sizeof運算子就是把括號內指定的資料型別轉換成相應的該型別所佔據的空間大小的具體數字,如在32位的操作機上,sizeof(int)這個表示式結果通常是4,sizeof應該算是一個特殊的運算子,因為編譯器本身就可以確定sizeof表示式的值。sizeof也可以這樣來用,例如:int i=20;i=sizeof(i);  通過sizeof運算子後i的值為4。同理sizeof(i j)的值也為4。

第八章:陣列,這一章是我比較陌生的,也可以說是我平時使用的不是很頻繁,所以感覺上比較陌生,陣列可以分為一維陣列,二維陣列,多為陣列和常量陣列,陣列是含有多個資料值 的資料結構,並且每個資料值具有相同的資料型別。要說的是巧妙地利用上一章所介紹的sizeof運算子可以確定陣列的大小(位元組數)。如:定義int a[10];並且已經初始化,那個sizeof(a);的結果通常為40。這樣便可以巧妙地推斷出陣列a的大小啦。

第九章:函式,在之前已經說過,C語言中的函式就是一個自帶宣告和語句的小程式,簡單地說C語言中的函式就是為了便於閱讀或者其他的目的把一些為了實現某一目的的同類程式用函式來打包,來實現相應的功能。

第十章:程式結構,前面一章中提到了函式,一個程式中只有一個函式很好好解決的問題,但是一般情況下一個程式中不止存在一個函式這麼簡單。如果一個程式中存在多個函式那麼它們的變數作用域和一些其他的問題該如何解決?這個問題在這一章中便得到了很好的詳細解釋。作者把本章分成了區域性變數,外部變數,程式塊,作用域和構建C程式五個部分。區域性變數和外部變數的區別在於變數在宣告時所在的位置,假如變數在宣告時處在某個函式的內部,那麼這個函式的作用範圍只能是這個函式體之內,如果它被宣告在函式體以外,那麼它便成為了外部變數。外部變數還可以變成全域性變數,外部變數的作用範圍比區域性變數的作用範圍要廣。程式塊可以看作一些程式語句的結合,其實函式體便可以看作一個程式塊。

第十一章:指標,指標對於我來說也是一個非常複雜的問題,一時半晌很難解釋的清楚,在基礎篇我打算把指標單獨分開待日後再做詳細的說明與解釋。同時第十二章中的指標與陣列也會同時做單獨的介紹。

第十三章:字串,字串和字元有所不同的是字串是一個字元的結合,為了使字串操作更為簡單,c語言把它獨立出來了,把字串,陣列和指標聯立起來是解決字串問題的有力辦法,同時還可以使用c語言的字串庫來處理字串。

到這裡,C語言程式設計現代方法基礎部分便簡單的草略的落筆了,或許大家還沒搞清楚我在說些什麼,哈哈我也覺得我講的很摸稜兩可,畢竟是自己寫的讀書筆記,只是一時興起才分享了出來,同時需要強調的是我也是一個程式渣,對很多地方瞭解的也不是很透側,在這裡只能做拋磚引玉吧,這也是我第一次寫讀書筆記,應該只能算是隨筆吧。同時我也在不斷努力,爭取成為自己心目中的那個大神,嘻嘻。同時希望結交到更多擁有相同志向興趣的童鞋,最後打個廣告吧,其實這本書真的很不錯噢,哈哈。下節講解:第十四章:前處理器。【非專業性知識總結,如遇到不同於其他文章的地方請認真分析或聯絡大蟲】