一個(gè)資深C語(yǔ)言工程師說(shuō)如何學(xué)習(xí)C語(yǔ)言

談及C語(yǔ)言,我想凡是學(xué)過(guò)它的朋友都有這樣一種感覺(jué),那就是“讓我歡喜讓我憂(yōu)?!睔g喜的是,C語(yǔ)言功能非常強(qiáng)大、應(yīng)用廣泛,一旦掌握了后,你就可以理直氣壯地對(duì)他人說(shuō)“我是電腦高手!”,而且以后若是再自學(xué)其他語(yǔ)言就顯得輕而易舉了。憂(yōu)慮的是,C語(yǔ)言猶如“少林武功”一般博大精深,太難學(xué)了。其實(shí)就筆者認(rèn)為C語(yǔ)言并非是“difficult(困難)”的,只要你能理清思路,掌握它的精髓,那么自學(xué)C語(yǔ)言是一件非常容易且又其樂(lè)無(wú)窮的事。今天本人就與大家一起談?wù)勅绾螌W(xué)習(xí)C語(yǔ)言或者說(shuō)學(xué)習(xí)C語(yǔ)言應(yīng)從哪幾方面著手。

了解一些基本知識(shí)

最后,如果大家如果在自學(xué)遇到困難,想找一個(gè)C++的學(xué)習(xí)環(huán)境,可以加入我們的C++學(xué)習(xí)圈,點(diǎn)擊我加入吧,會(huì)節(jié)約很多時(shí)間,減少很多在學(xué)習(xí)中遇到的難題。

一.C語(yǔ)言的背景

就個(gè)人感觸,無(wú)論學(xué)習(xí)哪門(mén)語(yǔ)言首先應(yīng)該了解一下自己所學(xué)語(yǔ)言的背景,也可以說(shuō)它的發(fā)展史。

C語(yǔ)言屬于高級(jí)程序語(yǔ)言的一種,它的前身是“ALGOL”。其創(chuàng)始人是布朗·W·卡尼漢和丹尼斯·M·利奇。C語(yǔ)言問(wèn)世時(shí)是帶有很大的局限性,因?yàn)樗荒苡糜赨NIX系統(tǒng)上。然而隨著科學(xué)技術(shù)的進(jìn)步,計(jì)算機(jī)工業(yè)的發(fā)展,C語(yǔ)言逐漸脫離UNIX。1987年美國(guó)標(biāo)準(zhǔn)化協(xié)會(huì)制定了C語(yǔ)言的國(guó)際標(biāo)準(zhǔn),簡(jiǎn)稱(chēng)“ANSI C”,從此以后它便成為一種廣泛使用的程序語(yǔ)言。C語(yǔ)言的優(yōu)點(diǎn)很多,主要的有如下四點(diǎn):

1.兼?zhèn)涓呒?jí)語(yǔ)言與低級(jí)語(yǔ)言的優(yōu)點(diǎn),屬于一種中間語(yǔ)言。

2.它是一種結(jié)構(gòu)化程序設(shè)計(jì)語(yǔ)言,非常適合結(jié)構(gòu)化程序設(shè)計(jì)。

3.有較豐富的數(shù)據(jù)類(lèi)型、運(yùn)算符以及函數(shù)供以選用。

4.直接與內(nèi)存打交道,使修改、編輯其他程序與文檔變得輕松,簡(jiǎn)單。

二.二大語(yǔ)系二種不同的學(xué)習(xí)方法

筆者學(xué)習(xí)過(guò)很多程序語(yǔ)言,例如:C,C++(C語(yǔ)言的擴(kuò)展),QBASIC,VB(BASIC的可視化),javascript,JSCRIPT ,VBSCRIPT,JAVA,ASP,F(xiàn)OXPRO,PERL等等,就本人實(shí)踐所得,其實(shí)高級(jí)程序語(yǔ)言分為兩大語(yǔ)系。一路是以C為主的程序語(yǔ)言,例如:javascript,JAVA等,這類(lèi)語(yǔ)言在函數(shù)的調(diào)用,程序語(yǔ)句的書(shū)寫(xiě),循環(huán)的控制都極為相似。另一路是以BASIC為首的程序語(yǔ)言,例如:FOXPRO,VBSCRIPT等,此類(lèi)語(yǔ)言同樣具有相似的函數(shù)調(diào)用,程序語(yǔ)句書(shū)寫(xiě)以及循環(huán)控制,但與C語(yǔ)系是不同的。因此若是您以前是從QBASIC起家的,那么在學(xué)習(xí)C語(yǔ)言前最好是先洗洗腦,千萬(wàn)不要把學(xué)習(xí)BASIC的方法以及思路用在C身上。

講到這里,我想大家對(duì)C語(yǔ)言一定有了感性認(rèn)識(shí)吧!下面讓我們?cè)偕A一下,全方位親密接觸它。學(xué)習(xí)C語(yǔ)言必須從以下四點(diǎn)入手,也就是說(shuō),只要你能掌握這四點(diǎn)的內(nèi)容,那么基本上就大功告成了。

1、多看代碼

在有一定基礎(chǔ)以后一定要多看別人的代碼。 注意代碼中的算法和數(shù)據(jù)結(jié)構(gòu)。 畢竟學(xué)C之后的關(guān)口就是算法和數(shù)據(jù)結(jié)構(gòu)。提到數(shù)據(jù)結(jié)構(gòu),指針是其中重要的一環(huán),絕大多數(shù)的數(shù)據(jù)結(jié)構(gòu)是建立在指針之上的,如鏈表、隊(duì)列、樹(shù)、圖等等,所以只有學(xué)好指針才能真正學(xué)好C。別的方面也要關(guān)注一下,諸如變量的命名、庫(kù)函數(shù)的用法等等。有些庫(kù)函數(shù)是經(jīng)常用到的。對(duì)于這些函數(shù)的用法就要牢牢記住。

2、要自己動(dòng)手

編程序是個(gè)實(shí)干的活,光說(shuō)不練不行。剛開(kāi)始學(xué)的時(shí)候可以多練習(xí)書(shū)上的習(xí)題。 對(duì)于自己不明白的地方,自己編個(gè)小程序?qū)嶒?yàn)一下是最好的方法,能給自己留下深刻的印象。 自己動(dòng)手的過(guò)程中要不斷糾正自己不好的編程習(xí)慣和認(rèn)識(shí)錯(cuò)誤。有一定的基礎(chǔ)以后可以嘗試編一點(diǎn)小游戲,文曲星之類(lèi)的電子詞典上小游戲很多,照著編作為練習(xí)?;A(chǔ)很扎實(shí)的時(shí)候,可以編一些關(guān)于數(shù)據(jù)結(jié)構(gòu)方面的東西,諸如最經(jīng)典的學(xué)生管理系統(tǒng)。之后.....學(xué)匯編、硬件知識(shí)。

3、選擇一個(gè)好的編譯器

英文版Turbo C v2.0沒(méi)話(huà)說(shuō),最經(jīng)典的C編譯器(下載地址: 網(wǎng)頁(yè)鏈接 ),其次推薦一個(gè)win-tc 1.91,支持windows下的編譯器。(下載地址: 網(wǎng)頁(yè)鏈接 )

4、關(guān)于養(yǎng)成良好的編程習(xí)慣

基本上每本C教材上都要提到。作為新手這條一定要時(shí)時(shí)遵守。具體方面:

(1) 在比較復(fù)雜的代碼后面要有注釋。 如果光溜溜一堆代碼,別人就不可能看懂你的代碼,而且也不利于查找錯(cuò)誤。除非你一直編東西給自己看。能在代碼里說(shuō)明白的就一定要在代碼里體現(xiàn)。比如變量名、函數(shù)名,在命名的時(shí)候盡量說(shuō)明是干什么用的。

(2)注意語(yǔ)句的嵌套不能過(guò)長(zhǎng),一般來(lái)說(shuō),一段代碼里Tab要少于8個(gè)。 簡(jiǎn)單說(shuō)就是語(yǔ)句最多8個(gè)嵌套。 對(duì)于新手來(lái)說(shuō),這個(gè)標(biāo)準(zhǔn)還要下降。有一個(gè)好習(xí)慣是,把主函數(shù)盡量寫(xiě)簡(jiǎn)短。經(jīng)常看到別人的代碼是主函數(shù)只有幾行,幾個(gè)函數(shù)調(diào)用,而定義全在主函數(shù)外部。這樣一是減少了主函數(shù)內(nèi)部的嵌套,二是比較精簡(jiǎn),容易讀懂。

(3)注意語(yǔ)句的選擇。并不是分支語(yǔ)句就用if循環(huán)就用while、for。在適當(dāng)?shù)那闆r下switch和do while語(yǔ)句也是要用的。在某些時(shí)候,switch語(yǔ)句比if語(yǔ)句更加精練明了,而do while比while少一個(gè)循環(huán)。

很多人對(duì)學(xué)習(xí)C語(yǔ)言感到無(wú)從下手,經(jīng)常問(wèn)我同一個(gè)問(wèn)題:究竟怎樣學(xué)習(xí)C語(yǔ)言?我是一個(gè)教師,已經(jīng)開(kāi)發(fā)了很多年的程序,和很多剛剛起步的人一樣,學(xué)習(xí)的第一個(gè)計(jì)算機(jī)語(yǔ)言就是C語(yǔ)言。經(jīng)過(guò)這些年的開(kāi)發(fā),我深深的體會(huì)到C語(yǔ)言對(duì)于一個(gè)程序設(shè)計(jì)人員多么的重要,如果不懂C語(yǔ)言,你想寫(xiě)底層程序這幾乎聽(tīng)起來(lái)很可笑,不懂C語(yǔ)言,你想寫(xiě)出優(yōu)秀高效的程序,這簡(jiǎn)直就是天方夜譚。為什么C語(yǔ)言如此重要呢?

第一:C語(yǔ)言語(yǔ)法結(jié)構(gòu)很簡(jiǎn)潔精妙,寫(xiě)出的程序也很高效,很便于描述算法,大多數(shù)的程序員愿意使用C語(yǔ)言去描述算法本身,所以,如果你想在程序設(shè)計(jì)方面有所建樹(shù),就必須去學(xué)它。

第二:C語(yǔ)言能夠讓你深入系統(tǒng)底層,你知道的操作系統(tǒng),哪一個(gè)不是C語(yǔ)言寫(xiě)的?所有的windows,Unix,Linux,Mac,os/2,沒(méi)有一個(gè)里外的,如果你不懂C語(yǔ)言,怎么可能深入到這些操作系統(tǒng)當(dāng)中去呢?更不要說(shuō)你去寫(xiě)它們的內(nèi)核程序了。

第三:很多新型的語(yǔ)言都是衍生自C語(yǔ)言,C++,Java,C#,J#,perl...哪個(gè)不是呢?掌握了C語(yǔ)言,可以說(shuō)你就掌握了很多門(mén)語(yǔ)言,經(jīng)過(guò)簡(jiǎn)單的學(xué)習(xí),你就可以用這些新型的語(yǔ)言去開(kāi)發(fā)了,這個(gè)再一次驗(yàn)證了C語(yǔ)言是程序設(shè)計(jì)的重要基礎(chǔ)。還有啊,多說(shuō)一點(diǎn):即使現(xiàn)在招聘程序員,考試都是考C語(yǔ)言,你想加入it行業(yè),那么就一定要掌握好C語(yǔ)言。

那么究竟怎樣學(xué)習(xí)C語(yǔ)言呢?

1:工欲善其事,必先利其器

這里介紹幾個(gè)學(xué)習(xí)C語(yǔ)言必備的東東:

一個(gè)開(kāi)發(fā)環(huán)境,例如turbo C2.0,這個(gè)曾經(jīng)占據(jù)了DOS時(shí)代開(kāi)發(fā)程序的大半個(gè)江山。但是現(xiàn)在windows時(shí)代,用turbo C有感覺(jué)不方面,編輯程序起來(lái)很吃力,并且拖放,更沒(méi)有函數(shù)變量自動(dòng)感應(yīng)功能,查詢(xún)參考資料也不方便。建議使用Visual C++,這個(gè)東西雖然比較大塊頭,但是一旦安裝好了,用起來(lái)很方便。

一本學(xué)習(xí)教程,現(xiàn)在C語(yǔ)言教材多如牛毛,但推薦大家使用《C語(yǔ)言程序設(shè)計(jì)》譚浩強(qiáng)主編 第二版 清華大學(xué)出版社,此書(shū)編寫(xiě)的很適合初學(xué)者,并且內(nèi)容也很精到。

除此以外,現(xiàn)在有很多輔助學(xué)習(xí)的軟件,畢竟現(xiàn)在是Window時(shí)代了,學(xué)習(xí)軟件多如牛毛,不象我們當(dāng)初學(xué)習(xí),只有讀書(shū)做題這么老套。我向大家推薦一個(gè)“集成學(xué)習(xí)環(huán)境(C語(yǔ)言)”,里邊的知識(shí)點(diǎn)總結(jié)和例程講解都非常好,還有題庫(kù)測(cè)試環(huán)境,據(jù)說(shuō)有好幾千題,甚至還有一個(gè)windows下的trubo C,初學(xué)者甚至不用裝其它的編譯器,就可以練習(xí)編程了,非常適合初學(xué)者。還有一個(gè)“C語(yǔ)言學(xué)習(xí)系統(tǒng)”軟件,不過(guò)感覺(jué)只是一個(gè)題庫(kù)系統(tǒng),如果你覺(jué)得題做的不夠,不妨也可以試試。

2:葵花寶典

學(xué)習(xí)計(jì)算機(jī)語(yǔ)言最好的方法是什么?答曰:讀程序。

沒(méi)錯(cuò),讀程序是學(xué)習(xí)C語(yǔ)言入門(mén)最快,也是最好的方法。如同我,現(xiàn)在學(xué)習(xí)新的J#,C#等其他語(yǔ)言,不再是抱著書(shū)本逐行啃,而是學(xué)習(xí)它們的例程。當(dāng)然,對(duì)于沒(méi)有學(xué)過(guò)任何計(jì)算機(jī)語(yǔ)言的初學(xué)者,最好還是先閱讀教程,學(xué)習(xí)完每一章,都要認(rèn)真體會(huì)這一章的所有概念,然后不放過(guò)這一章中提到的所有例程,然后仔細(xì)研讀程序,直到每一行都理解了,然后找?guī)讉€(gè)編程題目,最好是和例程類(lèi)似的或一樣的,自己試圖寫(xiě)出這段已經(jīng)讀懂的程序,不要以為例程你已經(jīng)讀懂了,你就可以寫(xiě)出和它一樣的程序,絕對(duì)不一定,不相信你就試一試吧,如果寫(xiě)不出來(lái),也不要著急,回過(guò)頭來(lái)再繼續(xù)研究例程,想想自己為什么寫(xiě)不出來(lái),然后再去寫(xiě)這段程序,反反復(fù)復(fù),直到你手到擒來(lái)為止,祝賀你,你快入門(mén)了。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容