請轉載的朋友註明出處
後記
從寫這個系列文章的念頭誕生起至文章的真正完成持續了將近半年的時間,這半年來我從大三變為了大四,期間經曆了各種考試以及剛剛結束的應聘,這段時間內我學習了很多東西,這些知識或多或少顯式隱式地對我在C語言和指標的理解上有所協助。而且我發現寫東西可以提到自己的水平,在寫《指標導學》的過程中,我感覺到自己對這些知識的理解也在不斷加深。
文章寫就後,在我回顧這些內容時,發現指標作為C語言的一種機制真的幾乎成了C的中樞神經,原因就在於指標這種變數儲存的是地址,這一下便使它變得“八面玲瓏”了,指標幾乎可以和C中的任何機制建立關係,所以如果想學好指標勢必也要對其他語言特性有較為清晰的瞭解,這樣才能融會貫通。當然這隻是我的一點兒個人理解,希望能與大家互相溝通、交流。
另外,我發現在C++中C語言的那部分知識幾乎完全適用(只有細微差別),所以如果想在C++上有所建樹,我覺得把C語言的部分搞清楚將會對你理解C++有十分顯著的協助,這樣你才有時間和精力去關注有關物件導向、泛型程式設計、設計模式這類上層應用或者說是思想,而不至於去為那些本應該已經瞭然於胸的基礎知識費盡心神。還有,不要認為在C++中就會少了指標的應用,在C++物件導向的程式設計中你幾乎逃不出指標的“魔爪”,即便有諸位C++大師建議應廣泛使用標準庫而避免使用指標,但實際上真的很難做到。學好指標還會對你理解迭代器的概念有莫大協助。
最後,對於初學C的朋友們我鬥膽向你們推薦幾本C語言學習的經典著作,這些經典大家應時常翻閱,每一次開卷你都會有新的領悟。還有,請大家注意:技術方面的書籍一定要看經典著作,否則你將會浪費大量的時間並可能被引入歧途。我只推薦5本書並用簡短的語言對其進行描述,介紹的順序和你將要安排的讀取順序應該不會有太大出入:
1.《C程式設計語言》(The C Programming Language)
作者:Brian
W. Kernighan & Dennis M. Ritchie
此書是由C語言的設計者Brian W. Kernighan和Dennis M. Ritchie編寫的一部介紹標準C語言及其程式設計方法的權威性著作,全面、系統地講述了C語言的各個特性及程式設計的基本方法。此書的權威性毋庸置疑,市面上很多書籍在編寫時都會參考這部“聖經”,換句話說,如果沒有這本書就沒有我們看到的種種C語言教程。讀這本書要有耐心,要多讀幾遍,理解C程式設計的思想。書中的練習題是掌握一門新語言特性的不二法門,一定要認真對待,配套的習題解答在市面上也能輕鬆找到。
2.《C陷阱與缺陷》(C Traps and Pitfalls)
作者:Andrew
Koenig
這本書不教你如何用C語言編程,也非C語言的百科全書供你查閱,它所講述的是協助你繞過C語言編程過程中的“陷阱”和障礙。這本書所揭示的知識,至少能夠協助你減少C代碼和初級C++代碼中90%的bug。書中還有對應每章所講內容的習題,認真對待每一道題並對照答案仔細研究可以讓你更輕巧地繞過“陷阱”。
3.《C專家編程》(Expert C Programming)
作者:Peter
Van Der Linden
這是一本成為C專家路上的必讀之書,作者通過幽默輕鬆的敘述帶你領略某些C語言特性的底層機制和進階提示,並闡釋了一些特性的形成原因,使你知其然並知其所以然。書中對一些在使用中容易出錯的問題進行了提點,在最後一章作者用簡練精闢的闡述介紹了C++的基本特徵。另外,書中還設定了“小啟發”欄目,其中出現的是在實際工作中的經驗和指導方針以供你在編程中應用。在附錄部分有一個程式員面試秘密的介紹,此中的面試題至今還是各大公司所青睞的,對你學習語言以及求職都會有極大協助。《C專家編程》的閱讀難度較《C陷阱與缺陷》要高,大家可不要唯讀了輕鬆的故事而丟了主幹內容,多讀幾遍並深入思考才能理解其中奧妙。
4.《C和指標》(Pointers on C)
作者:Kenneth
A. Reek
此書的名字就體現了立意,不同於市面上許多隻用一章篇幅專門講述指標的書籍,作者將指標作為本書的線索並貫穿於其他C語言特性的講解中,講述了指標在各種不同上下文環境中的有效用法,而且在講解的深度上讓人大呼過癮。在看完前三本著作之後,通過此書來回顧所學的內容時,你可能還會看到前所未見的知識和技巧,這就是《C和指標》的魅力,此外書中還闡述了關於諸如編程效率和程式可維護性的問題。
5.《C語言參考手冊》(C: A Reference Manual)
作者:Samuel
P. Harbison & Guy L. Steele
這本書是C語言的一本權威參考手冊,全書分為兩大部分:第一部分討論了C語言的所有語言特徵;第二部分討論了C語言的標準庫,並針對它們不同的功能分別進行詳細介紹。此書在討論C語言及標準庫的細節時,提供了許多執行個體和解釋,以便於讀者瞭解相關概念。第一部分的各章還提供了練習題和主要練習的解答,這些練習可協助讀者加深理解C語言的準系統和特性。我覺得這本書對C語言的描述比其他任何書籍都更加清晰和詳細,更重要的是,作者的語言十分簡練,絕無冗餘。如果想精通C語言,這本書是必讀的。如果你在學習C或者是一個C語言的開發人員,你的案頭絕對應該擺放這本書,即使你是一個C++程式員,我也建議你買上一本,因為如果對C的知識和技巧成竹在胸的話,將非常有助於你成為一名優秀的C++程式員。
給大家一個建議:在書籍的選擇上應該趨向於較新的版本,因為新版圖書往往包含以前的全部知識要點,而且涵蓋了最新的技術特性,這些新技術我們可能並不會全都用到,但當我們真的需要用到並去查詢資料時,你可能會因為選擇了一個正確的版本而節省大量的時間。
書籍介紹完了,但大家千萬不要陷入死讀書的深淵中,學好程式設計一定要理論與實際相聯合,多動手,勤思考才會有好的效果。在此,祝願所有學習程式設計的朋友在這條道路上都能取得令你自己、關注你的人和你關注的人皆滿意的成就。
前言
1.指標到底是什麼
2.指標的定義及運算
3.指標與數組的“愛恨情仇”
4.分清函數指標和指標函數
5.指標與結構
6.使用指標時的“陷阱”