不卡AV在线|网页在线观看无码高清|亚洲国产亚洲国产|国产伦精品一区二区三区免费视频

學(xué)習(xí)啦>學(xué)習(xí)方法>通用學(xué)習(xí)方法>學(xué)習(xí)經(jīng)驗(yàn)>

初學(xué)者應(yīng)該怎么學(xué)習(xí)c語言

時(shí)間: 威敏1027 分享

一、要讀就讀好書,否則不如不讀

所有初學(xué)者面臨的第一個(gè)問題便是:如何選擇教材。好的開始是成功的一半,選擇一本優(yōu)秀的教材是事半功倍的關(guān)鍵因素。不幸的是,學(xué)校通常會幫你指定一本很差勁的C語言課本;而幸運(yùn)的是,你還可以再次選擇。

大名鼎鼎的譚浩強(qiáng)教授出了一本《C語言程序設(shè)計(jì)》,據(jù)說發(fā)行量有超過400萬,據(jù)我所知,很多學(xué)校都會推薦這本書作為C語言課本。雖然本人的名字(譚浩宇)跟教授僅僅一字之差,但我是無比堅(jiān)定地黑他這本書的。這本書不是寫給計(jì)算機(jī)專業(yè)的學(xué)生的,而是給那些需要考計(jì)算機(jī)等級考試的其它專業(yè)學(xué)生看的。這本書的主要缺點(diǎn)是:例子程序非常不專業(yè),不能教給你程序設(shè)計(jì)應(yīng)該掌握的思考方式;程序風(fēng)格相當(dāng)?shù)夭缓茫瑫屇沭B(yǎng)成亂寫代碼的惡習(xí);錯(cuò)誤太多,曾經(jīng)有人指出過這本書的上百個(gè)錯(cuò)誤,其中不乏關(guān)鍵的概念性錯(cuò)誤。好了,這本書我也不想說太多了,有興趣大家可以百度一下:)

Kernighan和Ritchie的《The C Programming Language》(中譯名《C程序設(shè)計(jì)語言》)堪稱經(jīng)典中的經(jīng)典,不過舊版的很多內(nèi)容都已過時(shí),和現(xiàn)在的標(biāo)準(zhǔn)C語言相去甚遠(yuǎn),大家一定要看最新的版本,否則不如不看。另外,即使是最經(jīng)典最權(quán)威的書,也沒有辦法面面俱到,所以手邊常備一本《C語言參考手冊》是十分必要的?!禖語言參考手冊》就是《C Reference Manual》,是C語言標(biāo)準(zhǔn)的詳細(xì)描述,包括絕大多數(shù)C標(biāo)準(zhǔn)庫函數(shù)的細(xì)節(jié),算得上是最好的標(biāo)準(zhǔn)C語言的工具書。順便提一句,最新的《C程序設(shè)計(jì)語言》是根據(jù)C89標(biāo)準(zhǔn)修訂的,而《C語言參考手冊》描述的是C99標(biāo)準(zhǔn),二者可能會有些出入,建議按照C99標(biāo)準(zhǔn)學(xué)習(xí)。還有一本《C和指針》,寫得也是相當(dāng)?shù)夭诲e(cuò),英文名是《Pointers on C》,特別地強(qiáng)調(diào)指針的重要性,算是本書的一個(gè)特點(diǎn)吧。不過這本書并不十分適合初學(xué)者,如果你曾經(jīng)學(xué)過C語言,有那么一些C語言的基礎(chǔ)但又不是很扎實(shí),那么你可以嘗試一下這本書。我相信,只要你理解了指針,C語言便不再神秘。

如果你已經(jīng)啃完了一本C語言教材,想要更進(jìn)一步,那么有兩本書你一定要看。首先是《C Traps and Pitfalls》(中譯名《C陷井與缺陷》),很薄的一本小冊子,內(nèi)容非常非常地有趣。要注意一點(diǎn),這本書是二十多年前寫成的,里面提到的很多C語言的缺陷都已被改進(jìn),不過能夠了解一些歷史也不是什么壞事。然后你可以挑戰(zhàn)一下《Expert C Programming》(中譯名《C專家編程》),書如其名,這本書頗具難度,一旦你仔細(xì)讀完并能透徹理解,你便可以放心大膽地在簡歷上寫“精通C語言”了。

切記一個(gè)原則,不要讀自己目前還看不懂的書,那是浪費(fèi)生命。如果你看不懂,那你一定是缺失了某些必需基礎(chǔ)知識。此時(shí),你要仔細(xì)分析自己需要補(bǔ)充哪些內(nèi)容,然后再去書店尋找講述的這些內(nèi)容的書籍。把基礎(chǔ)知識補(bǔ)充完畢再回頭來學(xué)習(xí),才會真正的事半功倍。

二、Unix/Linux還是Windows,這是個(gè)很大的問題

不同的編程環(huán)境會造就出不同思維的程序員。Windows的程序員大多依賴集成開發(fā)環(huán)境,比如Visual Studio,而Unix程序員更加鐘愛Makefile與控制臺。顯而易見,集成開發(fā)環(huán)境更容易上手,在Windows上學(xué)習(xí)C語言,只需要會按幾個(gè)基本的Visutal C++工具欄按鈕就可以開始寫Hello, World!了,而在Unix下,你需要一些控制臺操作的基本知識。有人也許認(rèn)為Unix的環(huán)境更簡潔,但習(xí)慣的力量是很大的,大家都很熟悉Windows的基本操作,而為了學(xué)習(xí)C語言去專門裝一個(gè)Unix系統(tǒng),似乎有點(diǎn)不劃算。

對于一個(gè)只懂得Windows基本操作、連DOS是什么都不知道的新手而言,盡快做一些有趣而有意義的事情才是最重要的。用C語言寫一個(gè)小程序遠(yuǎn)比學(xué)習(xí)ls、cat等命令有趣,況且我們要專注于C語言本身,就不得不暫時(shí)忽略一些東西,比如編譯鏈接的過程、Makefile的寫法等等等等。

所以我建議初學(xué)者應(yīng)該以Visual C++ 6.0(不是VisualC++ .NET)或者Dev C++作為主要的學(xué)習(xí)環(huán)境,而且千萬不要在IDE的使用技巧上過多糾纏,因?yàn)榻窈竽阋欢ㄒD(zhuǎn)向Unix環(huán)境的。Visual C++ 6.0使用很方便,調(diào)試也很直觀,但其默認(rèn)的編譯器對C標(biāo)準(zhǔn)的支持并不好,而Dev C++使用gcc編譯器,對C99的標(biāo)準(zhǔn)都支持良好。使用順帶提一下,很多大學(xué)的C語言課程還在使用Turbo C 2.0作為實(shí)驗(yàn)環(huán)境,這是相當(dāng)不可取的,原因其一是TC 2.0對C標(biāo)準(zhǔn)幾乎沒有支持,其二是TC 2.0編譯得到的程序是16位的,這對今后理解32位的程序會造成極大的困擾(當(dāng)然,用djgpp之類的東西可以使TC 2.0編譯出32位程序,不過那過于復(fù)雜了)。

等你學(xué)完一本C語言的教材,你一定要轉(zhuǎn)向Unix平臺繼續(xù)學(xué)習(xí),幾乎所有的C語言高級教程都是基于Unix平臺的(比如《C專家編程》)。轉(zhuǎn)變的過程是痛苦的,你需要面對的是各種紛繁復(fù)雜的命令,完全不同于Windows平臺的思考方式,但是這種痛苦是值得的。Unix與C是共生的,Unix的思考方式和習(xí)慣更加符合C語言的思考方式和習(xí)慣。在Unix下,你可以找到無數(shù)優(yōu)秀的源代碼供你盡情閱讀,你可以方便地查看某個(gè)庫函數(shù)的聯(lián)機(jī)手冊,還可以看到最優(yōu)秀的代碼風(fēng)格

歸結(jié)起來就是一句話:初學(xué)C語言,建議使用Windows系統(tǒng)和集成開發(fā)環(huán)境,在準(zhǔn)備向“高手”方向努力時(shí),請先轉(zhuǎn)向Unix平臺。

1.學(xué)習(xí)基本的語法

例如:數(shù)據(jù)類型int、double的含義、使用和背景;邏輯判斷if的使用;流程控制的循環(huán)while\for的使用;函數(shù)的調(diào)用;

2.編寫基本語法的代碼

學(xué)完基本的語法,熟悉了之后,針對這些基本語法,寫一些基本的代碼來練習(xí),鞏固。在寫代碼的過程中熟悉基本語法。第1步只是學(xué)習(xí)理論,這一步就是鞏固基本語法,是通過實(shí)踐來鞏固,實(shí)踐就是寫代碼,能夠運(yùn)行通過,才表示正確。這一步是最基本的一步寫代碼。

3.混合使用語法實(shí)現(xiàn)復(fù)雜的功能

各個(gè)基本的語法點(diǎn)都掌握了,要開始找一些實(shí)用小程序來綜合練習(xí),就好像是物理考試的最后幾個(gè)大題一樣。綜合練習(xí)就是加深各個(gè)基本語法的理解和混合使用。這也就是項(xiàng)目經(jīng)驗(yàn)的基礎(chǔ)。這里會遇到各種混合使用中因?yàn)樽约翰皇於鲆姷母鞣N錯(cuò)誤,也就是積累經(jīng)驗(yàn)的過程。

4.寫多了,遇到的坑多了,然后就理解了語法,記住了用法。無法使用英語學(xué)習(xí)的強(qiáng)行記憶,是行不通的。

5.自己寫一個(gè)完整的可以供他人實(shí)際使用的程序

比如可以寫一個(gè)完整的計(jì)算器、一個(gè)完整的通訊錄、一個(gè)成績統(tǒng)計(jì)分析程序、圖書管理系統(tǒng)。這里會涉及到各種語法知識,也是真正大量積累項(xiàng)目經(jīng)驗(yàn)的時(shí)候了。這些完整的程序就是小項(xiàng)目了。這些都能夠做好后,就可以開始寫大項(xiàng)目了。這些完整程序都要以實(shí)際的需要來做,不能繞過,要直面需求。可以直接解決,可以換個(gè)思路解決,這是鍛煉自己的過程。

做完了這5步,C語言也就學(xué)好了。學(xué)習(xí)C語言,絕對不是簡單學(xué)習(xí)一下語法而已。5步做完,才真正的學(xué)完了C語言基礎(chǔ)。

C Primer Plus是非常適合完全自學(xué)C語言的書籍了。根據(jù)這個(gè)5步的前3步,這本書里有對應(yīng)的聯(lián)系,后面兩步需要自己來找程序開發(fā)。

1.簡潔緊湊、靈活方便

C語言一共只有32個(gè)關(guān)鍵字,9種控制語句,程序書寫自由,主要用小寫字母表示。它把高級語言的基本結(jié)構(gòu)和語句與低級語言的實(shí)用性結(jié)合起來。C語言可以象匯編語言一樣對位、字節(jié)和地址進(jìn)行操作,而這三者是計(jì)算機(jī)最基本的工作單元。

2.運(yùn)算符豐富

C的運(yùn)算符包含的范圍很廣泛,共有34種運(yùn)算符。C語言把括號、賦值、強(qiáng)制類型轉(zhuǎn)換等都作為運(yùn)算符處理。從而使C的運(yùn)算類型極其豐富,表達(dá)式類型多樣化,靈活使用各種運(yùn)算符可以實(shí)現(xiàn)在其它高級語言中難以實(shí)現(xiàn)的運(yùn)算。

3.數(shù)據(jù)結(jié)構(gòu)豐富

C的數(shù)據(jù)類型有:整型、實(shí)型、字符型、數(shù)組類型、指針類型、結(jié)構(gòu)體類型、共用體類型等,能用來實(shí)現(xiàn)各種復(fù)雜的數(shù)據(jù)類型的運(yùn)算,并引入了指針概念,使程序效率更高。另外C語言具有強(qiáng)大的圖形功能,支持多種顯示器和驅(qū)動(dòng)器,且計(jì)算功能、邏輯判斷功能強(qiáng)大。

4. C是結(jié)構(gòu)式語言

結(jié)構(gòu)式語言的顯著特點(diǎn)是代碼及數(shù)據(jù)的分隔化,即程序的各個(gè)部分除了必要的信息交流外彼此獨(dú)立。這種結(jié)構(gòu)化方式可使程序?qū)哟吻逦?便于使用、維護(hù)以及調(diào)試。C語言是以函數(shù)形式提供給用戶的,這些函數(shù)可方便的調(diào)用,并具有多種循環(huán)、條件語句控制程序流向,從而使程序完全結(jié)構(gòu)化。

5. C語法限制不太嚴(yán)格,程序設(shè)計(jì)自由度大

雖然C語言也是強(qiáng)類型語言,但它的語法比較靈活,允許程序編寫者有較大的自由度。

6. C語言允許直接訪問物理地址,可以直接對硬件進(jìn)行操作

因此既具有高級語言的功能,又具有低級語言的許多功能,能夠像匯編語言一樣對位、字節(jié)和地址進(jìn)行操作,而這三者是計(jì)算機(jī)最基本的工作單元,可以用來寫系統(tǒng)軟件。

7. C語言程序生成代碼質(zhì)量高,程序執(zhí)行效率高

一般只比匯編程序生成的目標(biāo)代碼效率低10へ20%。

8. C語言適用范圍大,可移植性好

C語言有一個(gè)突出的優(yōu)點(diǎn)就是適合于多種操作系統(tǒng),如DOS、UNIX,也適用于多種機(jī)型。

1)多久能學(xué)會編程?

這是一個(gè)沒有答案的問題。每個(gè)人投入的時(shí)間、學(xué)習(xí)效率和基礎(chǔ)都不一樣。如果你每天都拿出大把的時(shí)間來學(xué)習(xí),那么兩三個(gè)月就可以學(xué)會C/C++,不到半年時(shí)間就可以編寫出一些軟件。

但是有一點(diǎn)可以肯定,幾個(gè)月從小白成長為大神是絕對不可能的。要想出類拔萃,沒有幾年功夫是不行的。學(xué)習(xí)編程不是看幾本書就能搞定的,需要你不斷的練習(xí),編寫代碼,積累零散的知識點(diǎn),代碼量跟你的編程水平直接相關(guān),沒有幾萬行代碼,沒有拿得出手的作品,怎能稱得上“大神”。

每個(gè)人程序員都是這樣過來的,開始都是一頭霧水,連輸出九九乘法表都很吃力,只有通過不斷練習(xí)才能熟悉,這是一個(gè)強(qiáng)化思維方式的過程。

知識點(diǎn)可以在短時(shí)間內(nèi)了解,但是思維方式和編程經(jīng)驗(yàn)需要不斷實(shí)踐才能強(qiáng)化,這就是為什么很多初學(xué)者已經(jīng)了解了C語言的基本概念,但是仍然不會編寫代碼的原因。

程序員被戲稱為“碼農(nóng)”,意思是寫代碼的農(nóng)民,要想成為一個(gè)合格的農(nóng)民,必須要腳踏實(shí)地辛苦耕耘。

也不要壓力太大,一切編程語言都是紙老虎,一層窗戶紙,只要開竅了,就容易了。

2)學(xué)編程難嗎?

編程是一門技術(shù),我也不知道它難不難,我只知道,只要你想學(xué),肯定能學(xué)會。技術(shù)就是一層窗戶紙,是有道理可以遵循的,在我看來,比搞抽象的藝術(shù)要容易。

在技術(shù)領(lǐng)域,編程的入門門檻很低,互聯(lián)網(wǎng)的資料很多,只要你有一臺計(jì)算機(jī),一根網(wǎng)線,具備初中學(xué)歷,就可以學(xué)習(xí),投資在5K左右。

不管是技術(shù)還是非技術(shù),要想有所造詣,都必須潛心鉆研,沒有幾年功夫不會鶴立雞群。所以請先問問你自己,你想學(xué)編程嗎,你喜歡嗎,如果你覺得自己對編程很感興趣,想了解軟件或網(wǎng)站是怎么做的,那么就不要再問這個(gè)問題了,盡管去學(xué)就好了。

3)英語和數(shù)學(xué)基礎(chǔ)不行,可以學(xué)會嗎?初中畢業(yè)可以學(xué)會嗎?

首先說英語。編程需要你有英語基礎(chǔ),初中水平完全可以勝任。編程起源于美國,代碼中會出現(xiàn)很多單詞,有英語基礎(chǔ)記憶起來會非常容易,如果你不認(rèn)識也沒關(guān)系,我推薦你安裝有道詞典,它的劃詞功能非常棒,選中什么就及時(shí)翻譯什么,不管是句子還是單詞。這樣,相信你開發(fā)出常用的軟件不成問題。

當(dāng)然,如果你希望達(dá)到很高的造詣,希望被人稱為大神,那么肯定要閱讀英文的技術(shù)資料(不是所有資料都被翻譯成了中文),初中水平就有點(diǎn)吃力了。不過,長期閱讀英文會提高你的英文水平,只要你堅(jiān)持一段時(shí)間,即使只有初中水平,我相信借助有道詞典也會提高很快。

如果你沒有學(xué)過英語,不知道 am、is、are,那我該怎么說呢,有志者事竟成,只要你想學(xué),相信英語的障礙你也能克服。

至于數(shù)學(xué),只要你不打算搞算法、機(jī)器學(xué)習(xí)/人工智能、大數(shù)據(jù)/數(shù)據(jù)分析,會加減乘除法,知道次方、開方、科學(xué)計(jì)數(shù)法等最基本的概念,就不要把數(shù)學(xué)當(dāng)做學(xué)習(xí)的障礙了。

4)需要什么配置的電腦

如果你囊中羞澀,3K以上的臺式機(jī),4K以上的筆記本也可以勝任,當(dāng)然有時(shí)候會卡頓。

經(jīng)濟(jì)條件允許的話,最好5K以上的臺式機(jī),6K以上的筆記本。

如果想從事編程行業(yè),你早晚要有一臺高配的機(jī)器。它不但會讓你工作更加流暢有效率,還會讓你覺得工作是一種享受,所以很多程序員配備了MacBook。

5)學(xué)習(xí)編程要用Linux嗎

很多大神都輕視地說,我不用Windows,一直在用Linux,只有Linux才能讓你看到C的本質(zhì),C就是為Linux而生的。

話雖沒錯(cuò),但是你想想當(dāng)初你學(xué)習(xí)Windows花了多長時(shí)間,是不是一開始連切換輸入法也不會,編輯Word文檔也不會;如果你切換到Linux,你也會遇到同樣的問題,你需要一段時(shí)間來熟悉Linux,加大了你的學(xué)習(xí)成本,會慢慢消磨掉你對編程的興趣。

所以我建議,你可以在Windows下學(xué)習(xí)C語言,完全沒問題,如果有一天Windows不能滿足你的學(xué)習(xí)需求了,那你再切換到Linux,這個(gè)時(shí)候你對編程已經(jīng)很了解了,切換的成本也低了。

初學(xué)者應(yīng)該怎么學(xué)習(xí)c語言相關(guān)文章

電腦編程怎么學(xué)習(xí)

C語言學(xué)習(xí)心得5篇集合

c語言學(xué)習(xí)需要的時(shí)長以及方法

怎么樣才能學(xué)習(xí)好電腦知識

c語言心得體會范文3篇

c語言心得總結(jié)(五篇)

c語言程序設(shè)計(jì)怎么學(xué)習(xí)

c語言編程學(xué)習(xí)心得體會3篇

c語言學(xué)習(xí)心得6篇

2659274