走下“神壇”的C語言指標

吳雅明發表於2013-01-23

我在1998年到2003年中,大部分時間都在使用C語言進行日常的開發工作,之後由於工作性質的關係,轉向到JavaEE,.NET以及新興的Ruby、Python的體系中,從事各類以資料為中心的應用系統的開發框架、開發工具的研發。

由於時代的變遷,畢業於上世紀90年代中期的計算機專業的朋友應該大多都有和我相似的職業經歷。C語言是我們這代人剛走出大學校門使用的第一門開發語言,初體驗往往是最難忘的,所以C語言就像一個載體,承載了我們對於記憶體、作業系統、資料結構的所有理解。直到現在,除了需要物件導向的設計模型的問題領域,我還是習慣使用C語言的知識來分析和解釋問題。由於計算機硬體能力的提高,21世紀以來的開發語言讓後來的開發者集中精力去考慮軟體架構和業務邏輯,這雖然沒有錯,但是漠視底層的程式設計知識會讓我們喪失解決計算機系統基本問題的能力。

這幾年我一直在尋找一些機會,對之前的C語言經驗進行一次總結,一直沒有成功的原因除了時間問題之外,就是感覺對於很多C語言的知識點我很難總結,硬著頭皮總結的話,就變成教科書中的條條槓槓了。再仔細一琢磨,原來還是自己對很多知識點“不知其所以然”。直到幸運地遇到了來自對面島國的《征服C指標》這本書。學過日語的人都感覺日語很“曖昧”(即表達的意思需要根據語境等各種因素來判斷),但日本人在描述某種技術的操作過程,基本原理方面往往表現得既客觀準確,又簡單易懂。從大唐遣使到戰後日本復興,日本人都表現出驚人的對知識的總結然後再發揚的能力。我本人這些年在選擇技術書籍時就形成了一個習慣,如果想要學習程式設計思想、掌握核心理論,就買美國人寫的書;如果涉及知識整理,現場運用,還是選擇日本人的書(個人覺得文化交流和買不買日貨無關)。

本書最大的賣點有三個,首先閱讀物件“極其”明確;其次就是發揚了日系風格技術書籍的特長,簡單易懂,容易吸收;最後就是語言犀利,不拖戲帶水,而又不失詼諧風趣,具有濃厚的程式設計師的生活氣息。對於還沒有閱讀過本書的讀者來說,可以首先從日本亞馬遜的網站上了解一下來自日本讀者的書評(http://www.amazon.co.jp/dp/4774111422/)。

致對C語言指標的理解不夠徹底的讀者

作者:fomalhaut Weisszwerg

評分:★★★★★

反饋:35人中29人認為本書評有參考價值

可以說“能不能運用C語言進行開發,完全取決於是否能夠正確地理解指標”,指標在C語言中起到了具足輕重的作用。因為C語言中的很多標準函式也是使用指標開發出來的,不懂指標的話,你自然也不會使用這些標準函式。所以想要使用C語言,肯定是繞不開指標的。

可是,大家在對於指標的理解上總是那麼容易受挫。而很多C語言的入門書籍中對於指標諸如“這是C語言的語法習慣”、“C語言中經常這樣使用”等糊弄人的說法,無疑更是讓這種局面雪上加霜。

這是一本對指標的機制,概念等做了清晰說明的書。
除了指標之外,本書還對C語言程式設計中容易發生錯誤的地方,以及怎樣形成良好的程式設計規範這些方面做了一定的闡述,以促進大家對C語言整體的深入理解。

我想把這本書推薦給已經粗淺地學習過一遍C語言的,但對指標的理解還不夠徹底的讀者。理解指標,並且使用正確的方式來運用指標,可以大量減少在程式設計中出現的失誤。

如果你是一位C程式設計師,這本書絕對不會讓你失望。

本書貢獻了其他類似書籍中沒有的內容

作者:museclassica

評分:★★★★★

反饋:19人中14人認為本書評有參考價值

本書是關於指標的一本書,作者用了多少有點開玩笑的腔調來寫了這本書,但內容卻絕對是非常嚴謹的。不光是指標,在很多教科書中沒有講清楚的地方,在本書中都進行了正面的、毫不含糊的講解。
在一般的比較普及的C語言教科書中,都只是講解了指標和陣列的相同點,但本書對於兩者的不同點也著重進行了說明。

此外,所謂的“指標運算”、“C語言的程式設計風格”這些被一般教科書極力推薦的寫法,也被作者斬釘截鐵地批判為製造混亂的元凶。讀了這個部分,真讓感到暢快淋漓。
書中也有一些難度比較大、初學者一時難以理解的內容。對於這樣的內容,這些讀者不妨也初略地過一眼,至少不會有壞處。

致對已經理解了C語言語法的讀者

作者:museclassica

評分:★★★★★

反饋:19人中14人認為本書評有參考價值

給C語言程式設計製造難度的是指標。
一般的C語言入門書都只是介紹了一些簡單的例題,感覺自己好像懂了。但在實際程式設計過程中,還是覺得很多地方不太明白。

比如,
void (*signal(int sig, void (*func)(int)))(int);
這樣的原型宣告,它究竟是什麼意思,你明白嗎?

本書以指標為焦點,從指標和記憶體的關聯性,到怎樣有效地使用指標的例子,對指標進行了講解。
這本書完全採用口語化的敘述方式,看上去有點油腔滑調,但是內容卻是非常紮實,毫不含糊。

本書還提供了一般教科書和參考書沒有涉及到的關於C語言原生的一些內容,可以讓讀者既簡單又深入地理解C語言的指標。
拋棄了教科書的那種一本正經,採用了讓讀者有親和力的寫作風格,使得讀者可以完全理解作者的想法。此外,到處瀰漫的笑點讓我們在愉悅中理解了各種複雜而又奇怪的概念。

我想把這本書推薦給那些理解了C語言的語法,並且搞懂了入門教科書中的指標方面的概念、但在實際程式設計中還不能自如運用指標的朋友。

相關文章