c語言概要 第一章、概述 1、c語言的基本知識 1.1、c語言的執(zhí)行步驟 編輯-程序代碼的錄入,生成源程序*.c 編譯-語法分析查錯,翻譯生成目標(biāo)程序*.obj (語法或邏輯錯誤,從第一個開始改,變量定義,語句格式,表達(dá)式格式等) 鏈接-與其他目標(biāo)程序或庫鏈接裝配,生成可執(zhí)行程序*.exe 執(zhí)行 1.2、main函數(shù)的基本知識 main()函數(shù)的位置 c程序總是從main( )函數(shù)開始執(zhí)行 一個c程序可以包含一個主函數(shù),即main()函數(shù);也可以包含一個main()函數(shù)和若干其它函數(shù) 1.3、c程序的結(jié)構(gòu) 函數(shù)與主函數(shù) 程序由一個或多個函數(shù)組成 必須有一個且只能有一個主函數(shù)main() 程序執(zhí)行從main開始,在main中結(jié)束,其他函數(shù)通過嵌套調(diào)用得以執(zhí)行 程序語句 C程序由語句組成 用“;”作為語句終止符 注釋 // 或 /* */ 為注釋,不能嵌套 不產(chǎn)生編譯代碼 1.4、c 程序書寫的規(guī)則 習(xí)慣用小寫字母,大小寫敏感 不使用行號,無程序行概念:通常一個語句占一行 可使用空行和空格 常用鋸齒形的書寫格式;同一層次結(jié)構(gòu)的語句上下對齊。
第二章、基本數(shù)據(jù)類型與運(yùn)算 2.1、c程序的數(shù)據(jù)類型 注意類型和變量含義的不同(類型是固定好的名字,變量是自己起的名字) 變量占用的存儲空間 數(shù)據(jù)類型 基本類型:整型、字符型、浮點(diǎn)型(單精度型,雙精度型) 構(gòu)造類型:數(shù)組類型、結(jié)構(gòu)體類型 指針類型 空類型 注意基本類型賦初值的方式 基本數(shù)據(jù)類型的表示形式 整形數(shù)據(jù) 十進(jìn)制:以非0數(shù)字開頭,如:123,-9,0 八進(jìn)制;以0數(shù)字開頭,如:0123,067 十六進(jìn)制:以0x開頭,如:0x123,0xff 實(shí)型數(shù)據(jù) 十進(jìn)制:必須帶小數(shù)點(diǎn),如:123.0,-9.0 指數(shù)形式;如:1.23E3,0.9e-2,5e2 字符型數(shù)據(jù) 普通字符:如:'a','2','H','#' 轉(zhuǎn)義字符:如:'\n','\167','\xlf,'\\' (實(shí)現(xiàn)幾列的對齊:指定寬度。如%100\ '\t'制表位) (字符串長度。
“abc\n\t\\” strlen 6; sizeof 7) 基本數(shù)據(jù)類型的存儲長度 整型 Int 字節(jié)數(shù) 2 位數(shù) 16 數(shù)的表示范圍 -32768—32767 Short 2 16 -32768—32767 Long 4 32 -2147483648—2147483647 實(shí)型 Float 4 32 3.4e-38---3.4e38 Double 8 64 1.7e-308---1.7e308 字符型 Char 1 8 -128----127 2.2、標(biāo)識符命名規(guī)則 C語言標(biāo)志符命名規(guī)則 標(biāo)識符有數(shù)字,字母,下劃線組成 標(biāo)識符的首字符必須為字母和下劃線 標(biāo)識符不能為c語言的保留字(關(guān)鍵字) 如:auto extern sizeof float static case for struct char goto switch continue in typedef const if union default long unsigned do register void double return else short while enum signed 算術(shù)運(yùn)算符 + - * / % 關(guān)系運(yùn)算符 > = <= != 邏輯運(yùn)算符 ! && || 位運(yùn)算符 <> ~ | ^ & 賦值運(yùn)算符 = 及其擴(kuò)展賦值運(yùn)算符 條件運(yùn)算符 ? : 逗號運(yùn)算符 , 指針運(yùn)算符 * & 求字節(jié)數(shù)運(yùn)算符 sizeof 強(qiáng)制類型轉(zhuǎn)換運(yùn)算符 (類型) 分量運(yùn)算符 . -> 下標(biāo)運(yùn)算符 [ ] 其他 如函數(shù)調(diào)用運(yùn)算符() 運(yùn)算符的優(yōu)先級 由高到低:單目運(yùn)算符,算數(shù)運(yùn)算符,關(guān)系運(yùn)算符,賦值運(yùn)算符 說明:單目運(yùn)算符:自增運(yùn)算符,自減運(yùn)算符,類型裝換運(yùn)算符。結(jié)合方向:自右至左 如:++--I 先—i.。
算術(shù)運(yùn)算 結(jié)合方向自左至右 2.3基本運(yùn)算和表達(dá)式 關(guān)系表達(dá)式和邏輯表達(dá)式 (a>b)&&(x>y) (a==b)||(x==y) !=a||(a>b) A&&b.a為0.不執(zhí)行b A||b a為1.不執(zhí)行b 在 c 中邏輯運(yùn)算結(jié)果:1代表“真”,0代表“假”; 判斷一個表達(dá)式是否真:0代表“假”,非0代表“真” 條件表達(dá)式 逗號表達(dá)式 如:k=5,k++ 逗號值為5;k為6. 表達(dá)式1?表達(dá)式2 :表達(dá)式3 K=5>6 ? 1 : 0 2.4、混合運(yùn)算的數(shù)據(jù)類型轉(zhuǎn)換 2/3+0.5 雙精度浮點(diǎn)型 第三章、順序結(jié)構(gòu)程序設(shè)計 3.1、c語句的分類 簡單語句 表達(dá)式語句 表達(dá)式+分號 空語句 只有分號的語句 復(fù)合語句 用花括號將若干語句括起來 流程控制語句 選擇語句 if ,switch 循環(huán)語句 while, do while , for 轉(zhuǎn)移語句 break ,continue ,return goto 3.2、格式輸入函數(shù)scanf 一般形式:scanf(“格式控制字符串“,地址列表); 使用scanf函數(shù)時,需要注意: 格式字符的個數(shù)必須與輸入項的個數(shù)相同,數(shù)據(jù)類型必須一一對應(yīng),非格式字符串(說明性的)要原封不動的輸入。 輸入實(shí)行數(shù)據(jù)時,可以不帶小數(shù)點(diǎn),即按整型數(shù)據(jù)輸入 數(shù)值型數(shù)據(jù)與字符或字符串混合輸入時,需要注意輸入方式。
3.3、格式輸出函數(shù)printf Printf(“格式控制字符串“,輸出列表); 指定輸出格式,由格式字符串和非格式字符串兩種組成,非格式字符串照原樣輸出。 %[標(biāo)志][輸出最小寬度][.精度][長度]類型 標(biāo)志:- 左對齊;+ 右對齊; %f, %d, %c, %s 3.4、其他輸入輸出函數(shù) Putchar getchar puts gets 第四章、選擇結(jié)構(gòu)程序設(shè)計 If選擇結(jié)構(gòu) 單分支 If(表達(dá)式) 語句 雙分支 If(表達(dá)式) 語句1 Else 語句2 多分支 If (表達(dá)式1) 語句1 Else if(表達(dá)式2) 語句2 。
Else if(表達(dá)式m) 語句m Else 語句n Switch(表達(dá)式) { Case 常量表達(dá)式1:語句1;break; Case 常量表達(dá)式2:語句2;break; 。
Case 常量表達(dá)式m:語句m;break; Default:語句n;break; } 注意break的使用 第五章、循環(huán)結(jié)構(gòu)程序設(shè)計 循環(huán)三要素 初始條件 ;終止條件 ;在初始條件和終止條件間反復(fù)做某件事情(循環(huán)體) While(表達(dá)式) 語句 Do 語句 While(表達(dá)式)。
(第六版) Bradley L. Jones, Peler Aitken 著. 信達(dá)工作室 譯. 人民郵電出版社 這本書對初學(xué)者很好, 如果有點(diǎn)基礎(chǔ)那就更好了. 建議選擇譚浩強(qiáng)譚老師的書,簡單易學(xué),理論與實(shí)踐結(jié)合的很好,而且如果能認(rèn)真學(xué)的話,你會發(fā)現(xiàn)你的C語言基礎(chǔ)非常的實(shí)。
也不是說其他的書不好,但是有些書只是為了讓讀者入門,沒有前途呀。 先讀譚浩強(qiáng)的《C語言程序設(shè)計》,這是公認(rèn)的中文入門級教材。
但是書中的代碼風(fēng)格不敢恭維。看完這本,推薦《21天學(xué)通C語言》,這本書比較好,個人感覺。
看完這兩本,你就可以進(jìn)階C++了。 C語言只要把基礎(chǔ)打好就好,你要是想精通的話,最好是精通C++,這樣比較有前途。
但不要操之過急。
最低0.27元/天開通百度文庫會員,可在文庫查看完整內(nèi)容>
原發(fā)布者:ofhyeiu2
C語言最重要的知識點(diǎn)總體上必須清楚的:1)程序結(jié)構(gòu)是三種:順序結(jié)構(gòu)、選擇結(jié)構(gòu)(分支結(jié)構(gòu))、循環(huán)結(jié)構(gòu)。2)讀程序都要從main()入口,然后從最上面順序往下讀(碰到循環(huán)做循環(huán),碰到選擇做選擇),有且只有一個main函數(shù)。3)計算機(jī)的數(shù)據(jù)在電腦中保存是以二進(jìn)制的形式.數(shù)據(jù)存放的位置就是他的地址.4)bit是位是指為0或者1。byte是指字節(jié),一個字節(jié)=八個位.概念??嫉降模?、編譯預(yù)處理不是C語言的一部分,不占運(yùn)行時間,不要加分號。C語言編譯的程序稱為源程序,它以ASCII數(shù)值存放在文本文件中。誤的,一定不能出現(xiàn)分號。3、每個C語言程序中main函數(shù)是有且只有一個。4、在函數(shù)中不可以再定義函數(shù)。5、算法:可以沒有輸入,但是一定要有輸出。第一章C語言的基礎(chǔ)知識第一節(jié)、對C語言的基礎(chǔ)認(rèn)識1、C語言編寫的程序稱為源程序,又稱為編譯單位。2、C語言書寫格式是自由的,每行可以寫多個語句,可以寫多行。3、一個C語言程序有且只有一個main函數(shù),是程序運(yùn)行的起點(diǎn)。第二節(jié)、2、每個C語言程序?qū)懲旰?,都是先編譯,后鏈接,最后運(yùn)行。(.c---(.obj---(.exe)這個過程中注意.c和.obj文件時無法運(yùn)行的,只有.exe文件才可以運(yùn)行。(??迹。ǔ绦蚓庉?程序編譯-程序連接-程序運(yùn)行)第三節(jié)、標(biāo)識符1、標(biāo)識符(必考內(nèi)容):合法的要求是由字母,數(shù)字,下劃線組成。有其它元素就錯了。并且第一個必須為字母或則是下劃線。第一個為數(shù)字就錯了預(yù)定義標(biāo)識符:背誦
去百度文庫,查看完整內(nèi)容>
內(nèi)容來自用戶:暗香飛度
C語言考試必備基礎(chǔ)知識點(diǎn)整理
【考點(diǎn)1】C程序
C語言程序結(jié)構(gòu)有三種:順序結(jié)構(gòu),循環(huán)結(jié)構(gòu)(三個循環(huán)結(jié)構(gòu)),選擇結(jié)構(gòu)(if和switch)
【考點(diǎn)2】main函數(shù)
每個C語言程序中main函數(shù)是有且只有一個。讀程序都要從main()入口,然后從最上面順序往下讀(碰到循環(huán)做循環(huán),碰到選擇做選擇)。
【考點(diǎn)3】存儲形式
計算機(jī)的數(shù)據(jù)在電腦中是以二進(jìn)制的形式保存。最低的存儲單元是bit(位),位是由為0或者1構(gòu)成。byte是指字節(jié),一個字節(jié)=八個位。數(shù)據(jù)存放的位置就是它的地址。
【考點(diǎn)4】注釋
是對程序的說明,可出現(xiàn)在程序中任意合適的地方,注釋從“/*”開始到最近一個“*/”結(jié)束,其間任何內(nèi)容都不會被計算機(jī)執(zhí)行,注釋不可以嵌套。
【考點(diǎn)5】書寫格式
每條語句的后面必須有一個分號,分號是語句的一部分。一行內(nèi)可寫多條語句,一個語句可寫在多行上。
【考點(diǎn)6】標(biāo)識符
合法的用戶標(biāo)識符考查:
合法的要求是由字母,數(shù)字,下劃線組成。有其它元素就錯了。
并且第一個必須為字母或則是下劃線。第一個為數(shù)字就錯了。
C語言標(biāo)識符分如下3類
(1)關(guān)鍵字。它們在程序中有固定的含義,不能另作他用。如int、for、switch等。
(2)預(yù)定義標(biāo)識符。預(yù)先定義并具有特定含義的標(biāo)識符。如 【考點(diǎn) 注意
最好的教材就是
清華大學(xué)出版社的
譚浩強(qiáng) 教授編寫的 《C語言教程》
原因就是因為此書介紹的簡單,入門相當(dāng)?shù)暮谩?/p>
然后不急不躁的看,看到函數(shù)那一章,你就可以入門了
第一章要省略。那個理論太強(qiáng),沒用;
變量 數(shù)組 基本的三大結(jié)構(gòu)(順序,循環(huán),選擇)是重點(diǎn)。 這些看完了,你就基本入門了。
函數(shù)和指針是進(jìn)一步了解掌握的重點(diǎn)。要想提高,在這兩個方面要深入理解一些。
參考的其他方面,可以買一本二級的上級真題看看。
至于自學(xué)細(xì)節(jié),重要的是兩點(diǎn):
① C語言的思路方面。如果你從前沒有學(xué)過其他的編程語言,我覺得理解它的思路是很重要的事情!注意他們的條理和組織。
②就是內(nèi)部的構(gòu)成。可以按下面的一項項的學(xué)習(xí):
先從最小的單位 變量 開始
然后簡單的 運(yùn)算符(掌握算術(shù)和賦值,比較,邏輯運(yùn)算符,前期就差不多了,沒有必要掌握高難度運(yùn)算符)
再次三大結(jié)構(gòu)。要牢固理解。
這些就算是入門了,其他的你再根據(jù)需要在深入學(xué)習(xí)吧。
祝學(xué)習(xí)成功
如果是想通過計算機(jī)等級考試 就買一本全國計算機(jī)等級考試二級試題認(rèn)真做就可以了 當(dāng)然也要加強(qiáng)上機(jī)實(shí)踐。
怎樣才能學(xué)好C語言
第一:C語言語法結(jié)構(gòu)很簡潔精妙,寫出的程序也很高效,很便于描述算法,大多數(shù)的程序員愿意使用C語言去描述算法本身,所以,如果你想在程序設(shè)計方面有所建樹,就必須去學(xué)它。
第二:C語言能夠讓你深入系統(tǒng)底層,你知道的操作系統(tǒng),哪一個不是C語言寫的?所有的indows, Unix, Linux, Mac, os/2,沒有一個里外的,如果你不懂C語言,怎么可能深入到這些操作系統(tǒng)當(dāng)中去呢?更不要說你去寫它們的內(nèi)核程序了。
第三:很多新型的語言都是衍生自C語言,C++,Java,C#,J#,perl。哪個不是呢?掌握了C語言,可以說你就掌握了很多門語言,經(jīng)過簡單的學(xué)習(xí),你就可以用這些新型的語言去開發(fā)了,這個再一次驗證了C語言是程序設(shè)計的重要基礎(chǔ)。還有啊,多說一點(diǎn):即使現(xiàn)在招聘程序員,考試都是考C語言,你想加入it行業(yè),那么就一定要掌握好C語言。
那么究竟怎樣學(xué)習(xí)C語言呢?
1:工欲善其事,必先利其器
這里介紹幾個學(xué)習(xí)C語言必備的東東:
一個開發(fā)環(huán)境,例如turbo C 2.0,這個曾經(jīng)占據(jù)了DOS時代開發(fā)程序的大半個江山。但是現(xiàn)在windows時代,用turbo C有感覺不方面,編輯程序起來很吃力,并且拖放,更沒有函數(shù)變量自動感應(yīng)功能,查詢參考資料也不方便。建議使用Visual C++,這個東西雖然比較大塊頭,但是一旦安裝好了,用起來很方便。
一本學(xué)習(xí)教程,現(xiàn)在C語言教材多如牛毛,但推薦大家使用《C語言程序設(shè)計》譚浩強(qiáng)主編 第二版 清華大學(xué)出版社,此書編寫的很適合初學(xué)者,并且內(nèi)容也很精到。
除此以外,現(xiàn)在有很多輔助學(xué)習(xí)的軟件,畢竟現(xiàn)在是Window時代了,學(xué)習(xí)軟件多如牛毛,不象我們當(dāng)初學(xué)習(xí),只有讀書做題這么老套。我向大家推薦一個“集成學(xué)習(xí)環(huán)境(C語言)”,里邊的知識點(diǎn)總結(jié)和例程講解都非常好,還有題庫測試環(huán)境,據(jù)說有好幾千題,甚至還有一個windows下的trubo C,初學(xué)者甚至不用裝其它的編譯器,就可以練習(xí)編程了,非常適合初學(xué)者。還有一個“C語言學(xué)習(xí)系統(tǒng)”軟件,不過感覺只是一個題庫系統(tǒng),如果你覺得題做的不夠,不妨也可以試試。
2:葵花寶典
學(xué)習(xí)計算機(jī)語言最好的方法是什么?答曰:讀程序。
沒錯,讀程序是學(xué)習(xí)C語言入門最快,也是最好的方法。如同我,現(xiàn)在學(xué)習(xí)新的J#,C#等其他語言,不再是抱著書本逐行啃,而是學(xué)習(xí)它們的例程。當(dāng)然,對于沒有學(xué)過任何計算機(jī)語言的初學(xué)者,最好還是先閱讀教程,學(xué)習(xí)完每一章,都要認(rèn)真體會這一章的所有概念,然后不放過這一章中提到的所有例程,然后仔細(xì)研讀程序,直到每一行都理解了,然后找?guī)讉€編程題目,最好是和例程類似的或一樣的,自己試圖寫出這段已經(jīng)讀懂的程序,不要以為例程你已經(jīng)讀懂了,你就可以寫出和它一樣的程序,絕對不一定,不相信你就試一試吧,如果寫不出來,也不要著急,回過頭來再繼續(xù)研究例程,想想自己為什么寫不出來,然后再去寫這段程序,反反復(fù)復(fù),直到你手到擒來為止,祝賀你,你快入門了。
3:登峰造極
寫程序的最高境界其實(shí)就是掌握各種解決問題的手段(數(shù)據(jù)結(jié)構(gòu))和解決問題的方法(算法)。
是不是寫出底層程序就是程序設(shè)計高手呢?非也,寫底層程序,無非是掌握了硬件的結(jié)構(gòu),況且硬件和硬件還不一樣,要給一個芯片寫驅(qū)動程序,無非就是掌握這塊芯片的各種寄存器及其組合,然后寫值讀值,僅此而已。這不過是熟悉一些io函數(shù)罷了。那么怎樣才算精通程序設(shè)計呢?怎樣才能精通程序設(shè)計呢?舉個例子:你面前有10個人,找出一個叫“張三”的人,你該怎么辦?第一種方法:直接對這10個人問:“誰叫張三”。第2種方法:你挨個去問“你是不是張三?”,直到問到的這個人就是張三。第三種方法:你去挨個問一個人“你認(rèn)不認(rèn)識張三,指給我看”。不要小看這個問題,你說當(dāng)然會選第一種方法,沒錯恭喜你答對了,因為這個方法最快,效率最高,但是在程序設(shè)計中找到解決問題的最優(yōu)方法和你用的手段卻是考驗一個程序員程序設(shè)計水平的重要標(biāo)志,而且是不容易達(dá)到的。剛才這個問題類似于數(shù)據(jù)結(jié)構(gòu)和算法中的:Map數(shù)據(jù)結(jié)構(gòu),窮舉查找和折半查找。所以掌握好數(shù)據(jù)結(jié)構(gòu)和一些常用算法,是登峰造極的必然之路。最后給大家推薦嚴(yán)尉敏的《數(shù)據(jù)結(jié)構(gòu)》清華大學(xué)出版社,希望每一個想成為程序設(shè)計高手的人研讀此書。
C語言基礎(chǔ)教程別看了,學(xué)習(xí)C語言不能脫離具體的系統(tǒng),不能不了解計算機(jī)體系結(jié)構(gòu)和操作系統(tǒng)原理、編譯原理,推薦你看這本開源的書:《Linux C編程一站式學(xué)習(xí)》如果是在Windows上學(xué)習(xí),可以安裝cygwin來模擬linux環(huán)境,下載地址:/site/install/下面貼一下這本書的介紹,磨刀不誤砍柴工,看過之后你就會愛上這本書了:這本書有什么特點(diǎn)?面向什么樣的讀者? 這本書最初是為北京亞嵌教育研究中心的嵌入式Linux系統(tǒng)工程師就業(yè)班課程量身定做的教材之一。
該課程是為期四個月的全日制職業(yè)培訓(xùn),要求學(xué)員畢業(yè)時具備非常Solid的C編程能力,能熟練地使用Linux系統(tǒng),同時對計算機(jī)體系結(jié)構(gòu)與指令集、操作系統(tǒng)原理和設(shè)備驅(qū)動程序都有較深入的了解。然而學(xué)員入學(xué)時的水平是非常初級而且參差不齊的:學(xué)歷有專科、本科也有研究生,專業(yè)有和計算機(jī)相關(guān)的也有很不相關(guān)的(例如會計專業(yè)),以前從事的職業(yè)有和技術(shù)相關(guān)的也有完全不相關(guān)的(例如HR),年齡從二十出頭到三十五六歲的都有。
這么多背景完全不同、基礎(chǔ)完全不同、思維習(xí)慣和理解能力完全不同的人來聽同一堂課,大家都迫切希望學(xué)會嵌入式開發(fā)技術(shù),投身IT行業(yè),這就是職業(yè)教育的特點(diǎn),也是我編這本書時需要考慮的主要問題。學(xué)習(xí)編程絕不是一件簡單的事,尤其是對于零基礎(chǔ)的初學(xué)者來說。
大學(xué)的計算機(jī)專業(yè)有四年時間從零基礎(chǔ)開始培養(yǎng)一個人,微積分、線代、隨機(jī)、離散、組合、自動機(jī)、編譯原理、操作系統(tǒng)、計算機(jī)組成原理等等一堆基礎(chǔ)課,再加上C/C++、Java、數(shù)據(jù)庫、網(wǎng)絡(luò)、軟件工程、計算機(jī)圖形學(xué)等等一堆專業(yè)課,最后培養(yǎng)出一個能找到工作的學(xué)生。很遺憾這最后一條很多學(xué)校沒有做好,來亞嵌培訓(xùn)的很多學(xué)生就是四年這么學(xué)過來的,但據(jù)我們考查他們的基礎(chǔ)幾乎為零,我不知道為什么。
與之形成鮮明對比的是,只給我們四個月的時間,同樣要求從零基礎(chǔ)開始,最后培養(yǎng)出一個能找到工作的學(xué)生,而且還要保證他找到工作,這就是職業(yè)教育的特點(diǎn)。為什么我說“只給我們四個月的時間”?我們倒是想教四年呢,但學(xué)時的長短我們做不了主,是由市場規(guī)律決定的。
四年的任務(wù)要求四個月做好,要怎么完成這樣一個幾乎不可能的任務(wù)?有些職業(yè)教育給出的答案是“實(shí)用主義”,打出了“有用就學(xué),沒有用就不學(xué)”的口號,大肆貶低說大學(xué)里教的基礎(chǔ)課都是過時的、無用的,只有他們教的技術(shù)才是實(shí)用的,這種炒作很不好,我認(rèn)為大學(xué)里教的每一門課都是非常有用的,基礎(chǔ)知識在任何時候都不會過時,倒是那些時髦的“實(shí)用技術(shù)”有可能很快就過時了。四年的任務(wù)怎么才能用四個月做好?我們給出的答案是“優(yōu)化”。
現(xiàn)在大學(xué)里安排的課程體系最大的缺點(diǎn)就是根本不考慮優(yōu)化。每個過來人都會有這樣的感覺:大一大二學(xué)了好多數(shù)學(xué)課,卻不知道都是干什么用的,為什么要學(xué)。
連它有什么用都不知道怎么能有興趣學(xué)好呢?然后到大三大四學(xué)專業(yè)課時,用到以前的知識了,才發(fā)現(xiàn)以前學(xué)的數(shù)學(xué)是多么有用,然而早就忘得一干二凈了,考完試都還給老師了,回頭重新學(xué)吧,這時候才發(fā)現(xiàn)很多東西以前根本沒學(xué)明白,現(xiàn)在才真的學(xué)明白了,那么前兩年的時間豈不是都浪費(fèi)了?大學(xué)里的課程體系還有一個缺點(diǎn)就是不靈活,每門課必須占一個學(xué)期,必須由一個老師教,不同課程的老師之間沒有任何溝通和銜接,其實(shí)這些課程之間是相互依賴的,把它們強(qiáng)行拆開是不符合人的認(rèn)知規(guī)律的。比如我剛上大學(xué)的時候,大一上半學(xué)期就被逼著學(xué)C語言,其實(shí)C語言是一門很難的編程語言,不懂編譯原理、操作系統(tǒng)和計算機(jī)體系結(jié)構(gòu)根本不可能學(xué)明白,那半個學(xué)期自然就浪費(fèi)掉了。
當(dāng)時幾乎所有學(xué)校的計算機(jī)相關(guān)專業(yè)都是這樣,大一上來就學(xué)C語言,有的學(xué)校更瘋狂,上來就學(xué)C++,導(dǎo)致大多數(shù)學(xué)生都以為自己會C語言,但其實(shí)都是半吊子水平,到真正寫代碼的時候經(jīng)常為一個Bug搞得焦頭爛額,卻沒有機(jī)會再系統(tǒng)地學(xué)一遍C語言,因為在學(xué)??磥恚珻語言課早在大一就給你“上完了”,就像一頓飯已經(jīng)吃完了,不管你吃飽沒吃飽,不會再讓你重吃一遍了。顯而易見,如果要認(rèn)真地對這些課程做優(yōu)化,的確是有很多水份可以擠的。
本書有以下特點(diǎn): * 不是孤立地講C語言,而是和編譯原理、操作系統(tǒng)、計算機(jī)體系結(jié)構(gòu)結(jié)合起來講?;蛘哒f,本書的內(nèi)容只是以C語言為載體,真正講的是計算機(jī)的原理和程序的原理。
* 強(qiáng)調(diào)基本概念和基本原理,在編排順序上非常重視概念之間的依賴關(guān)系,每次引入一個新的概念,只依賴于前面章節(jié)已經(jīng)講過的概念,而絕不會依賴后面章節(jié)要講的概念。有些地方為了敘述得完整,也會引用后面要講的內(nèi)容,比如說“有關(guān)XX我們到XX章再仔細(xì)講解”,凡是這種引用都不是必要的依賴,可以當(dāng)它不存在,只管繼續(xù)往下看就行了。
* 盡量做到每個知識點(diǎn)直到要用的時候才引入。過早引入一個知識點(diǎn),講完了又不用它,讀者很快就會遺忘,這是不符合認(rèn)知規(guī)律的。
這是一本從零基礎(chǔ)開始學(xué)習(xí)編程的書,不要求讀者有任何編程經(jīng)驗,但讀者至少需要具備以下素質(zhì): * 熟悉Linux系統(tǒng)的基本操作。如果不具備這一點(diǎn),請先參考其它教材。
怎么樣學(xué)好C語言?! 很多人對學(xué)習(xí)C語言感到無從下手,經(jīng)常問我同一個問題:究竟怎樣學(xué)習(xí)C語言?我是一個教師,已經(jīng)開發(fā)了很多年的程序,和很多剛剛起步的人一樣,學(xué)習(xí)的第一個計算機(jī)語言就是C語言。
經(jīng)過這些年的開發(fā),我深深的體會到C語言對于一個程序設(shè)計人員多么的重要,如果不懂C語言,你想寫底層程序這幾乎聽起來很可笑,不懂C語言,你想寫出優(yōu)秀高效的程序,這簡直就是天方夜譚。為什么C語言如此重要呢? 第一:C語言語法結(jié)構(gòu)很簡潔精妙,寫出的程序也很高效,很便于描述算法,大多數(shù)的程序員愿意使用C語言去描述算法本身,所以,如果你想在程序設(shè)計方面有所建樹,就必須去學(xué)它。
第二:C語言能夠讓你深入系統(tǒng)底層,你知道的操作系統(tǒng),哪一個不是[size=2C語言寫的?所有的windows,Unix,Linux,Mac,os/2,沒有一個里外的,如果你不懂C語言,怎么可能深入到這些操作系統(tǒng)當(dāng)中去呢?更不要說你去寫它們的內(nèi)核程序了。 第三:很多新型的語言都是衍生自C語言,C++,Java,C#,J#,perl。
哪個不是呢?掌握了C語言,可以說你就掌握了很多門語言,經(jīng)過簡單的學(xué)習(xí),你就可以用這些新型的語言去開發(fā)了,這個再一次驗證了C語言是程序設(shè)計的重要基礎(chǔ)。還有啊,多說一點(diǎn):即使現(xiàn)在招聘程序員,考試都是考C語言,你想加入it行業(yè),那么就一定要掌握好C語言。
那么究竟怎樣學(xué)習(xí)C語言呢? 1:工欲善其事,必先利其器 這里介紹幾個學(xué)習(xí)C語言必備的東東: 一個開發(fā)環(huán)境,例如turbo?C?2.0,這個曾經(jīng)占據(jù)了DOS時代開發(fā)程序的大半個江山。但是現(xiàn)在windows時代,用turbo?C有感覺不方面,編輯程序起來很吃力,并且拖放,更沒有函數(shù)變量自動感應(yīng)功能,查詢參考資料也不方便。
建議使用Visual C++,這個東西雖然比較大塊頭,但是一旦安裝好了,用起來很方便。 一本學(xué)習(xí)教程,現(xiàn)在C語言教材多如牛毛,但推薦大家使用《C語言程序設(shè)計》譚浩強(qiáng)主編,此書編寫的很適合初學(xué)者,并且內(nèi)容也很精到。
除此以外,現(xiàn)在有很多輔助學(xué)習(xí)的軟件,畢竟現(xiàn)在是Window時代了,學(xué)習(xí)軟件多如牛毛,不象我們當(dāng)初學(xué)習(xí),只有讀書做題這么老套。我向大家推薦一個“集成學(xué)習(xí)環(huán)境(C語言)”,里邊的知識點(diǎn)總結(jié)和例程講解都非常好,還有題庫測試環(huán)境,據(jù)說有好幾千題,甚至還有一個windows下的trubo?C,初學(xué)者甚至不用裝其它的編譯器,就可以練習(xí)編程了,非常適合初學(xué)者。
還有一個“C語言學(xué)習(xí)系統(tǒng)”軟件,不過感覺只是一個題庫系統(tǒng),如果你覺得題做的不夠,不妨也可以試試。 2:葵花寶典 學(xué)習(xí)計算機(jī)語言最好的方法是什么?答曰:讀程序。
沒錯,讀程序是學(xué)習(xí)C語言入門最快,也是最好的方法。如同我,現(xiàn)在學(xué)習(xí)新的J#,C#等其他語言,不再是抱著書本逐行啃,而是學(xué)習(xí)它們的例程。
當(dāng)然,對于沒有學(xué)過任何計算機(jī)語言的初學(xué)者,最好還是先閱讀教程,學(xué)習(xí)完每一章,都要認(rèn)真體會這一章的所有概念,然后不放過這一章中提到的所有例程,然后仔細(xì)研讀程序,直到每一行都理解了,然后找?guī)讉€編程題目,最好是和例程類似的或一樣的,自己試圖寫出這段已經(jīng)讀懂的程序,不要以為例程你已經(jīng)讀懂了,你就可以寫出和它一樣的程序,絕對不一定,不相信你就試一試吧,如果寫不出來,也不要著急,回過頭來再繼續(xù)研究例程,想想自己為什么寫不出來,然后再去寫這段程序,反反復(fù)復(fù),直到你手到擒來為止,祝賀你,你快入門了。 3:登峰造極 寫程序的最高境界其實(shí)就是掌握各種解決問題的手段(數(shù)據(jù)結(jié)構(gòu))和解決問題的方法(算法)。
是不是寫出底層程序就是程序設(shè)計高手呢?非也,寫底層程序,無非是掌握了硬件的結(jié)構(gòu),況且硬件和硬件還不一樣,要給一個芯片寫驅(qū)動程序,無非就是掌握這塊芯片的各種寄存器及其組合,然后寫值讀值,僅此而已。這不過是熟悉一些io函數(shù)罷了。
那么怎樣才算精通程序設(shè)計呢?怎樣才能精通程序設(shè)計呢?舉個例子:你面前有10個人,找出一個叫“張三”的人,你該怎么辦?第一種方法:直接對這10個人問:“誰叫張三”。第2種方法:你挨個去問“你是不是張三?”,直到問到的這個人就是張三。
第三種方法:你去挨個問一個人“你認(rèn)不認(rèn)識張三,指給我看”。不要小看這個問題,你說當(dāng)然會選第一種方法,沒錯恭喜你答對了,因為這個方法最快,效率最高,但是在程序設(shè)計中找到解決問題的最優(yōu)方法和你用的手段卻是考驗一個程序員程序設(shè)計水平的重要標(biāo)志,而且是不容易達(dá)到的。
剛才這個問題類似于數(shù)據(jù)結(jié)構(gòu)和算法中的:Map數(shù)據(jù)結(jié)構(gòu),窮舉查找和折半查找。所以掌握好數(shù)據(jù)結(jié)構(gòu)和一些常用算法,是登峰造極的必然之路。
首先要多看書;
自學(xué)下述書籍
《The C Programming Language》 《C程序設(shè)計語言》本書原著為C語言的設(shè)計者之一Dennis M.Ritchie和著名的計算機(jī)科學(xué)家Brian W.Kernighan合著的一本介紹C語言的權(quán)威經(jīng)典著作。人們熟知的“hello,World”程序就是由本書首次引入的,現(xiàn)在,這一程序已經(jīng)成為所有程序設(shè)計語言入門的第一課。原著第2版根據(jù)1987年制定的ANSIC標(biāo)準(zhǔn)做了適當(dāng)?shù)男抻?,引入了最新的語言形式,并增加了新的示例,通過簡潔的描述、典型的示例,作者全面、系統(tǒng)、準(zhǔn)確地講述了C語言的各個特性以及程序設(shè)計的基本方法。對于計算機(jī)從業(yè)人員來說,本書是一本必讀的程序設(shè)計語言方面的參考書。
《Expert C Programming》 《C專家編程》展示了最優(yōu)秀的C程序員所使用的編碼技巧,并專門開辟了一章對C++的基礎(chǔ)知識進(jìn)行了介紹。
書中C的歷史、語言特性、聲明、數(shù)組、指針、鏈接、運(yùn)行時、內(nèi)存以及如何進(jìn)一步學(xué)習(xí)C++等問題進(jìn)行了細(xì)致的講解和深入的分析。全書擷取幾十幾個實(shí)例進(jìn)行講解,對C程序員具有非常高的實(shí)用價值。
《C Traps and Pitfalls》 《C陷阱與缺陷》作者以自己1985年在貝爾實(shí)驗室時發(fā)表的一篇論文為基礎(chǔ),結(jié)合自己的工作經(jīng)驗擴(kuò)展成為這本對C程序員具有珍貴價值的經(jīng)典著作。寫作本書的出發(fā)點(diǎn)不是要批判C語言,而是要幫助C程序員繞過編程過程中的陷阱和障礙。
全書分為8章,分別從詞法分析、語法語義、連接、庫函數(shù)、預(yù)處理器、可移植性缺陷等幾個方面分析了C編程中可能遇到的問題。最后,作者用一章的篇幅給出了若干具有實(shí)用價值的建議。
《Pointers on C》 《C和指針》本書提供與C語言編程相關(guān)的全面資源和深入討論。本書通過對指針的基礎(chǔ)知識和高級特性的探討,幫助程序員把指針的強(qiáng)大功能融入到自己的程序中去。 全書共18章,覆蓋了數(shù)據(jù)、語句、操作符和表達(dá)式、指針、函數(shù)、數(shù)組、字符串、結(jié)構(gòu)和聯(lián)合等幾乎所有重要的C編程話題。書中給出了很多編程技巧和提示,每章后面有針對性很強(qiáng)的練習(xí),附錄部分則給出了部分練習(xí)的解答。
《C: A Reference Manual》 《C參考手冊》全書分為兩大部分,共24章。第一部分討論了C語言的所有語言特征,包括詞法、預(yù)處理機(jī)制、聲明、類型、表達(dá)式、語句以及函數(shù)等基本語言特性。第二部分討論了C語言的標(biāo)準(zhǔn)庫,根據(jù)它們不同的功能分別詳細(xì)介紹。為幫助讀者理解相關(guān)概念,本書在討論C語言及其標(biāo)準(zhǔn)庫的各方面問題時,提供了許多實(shí)例和解釋。在第一部分的各章中還提供了練習(xí)題,書后則給出了主要練習(xí)的解答。這些練習(xí)的主要目的是幫助讀者理解C語言的基本機(jī)制及其重要細(xì)節(jié),其中并不涉及復(fù)雜的程序設(shè)計技術(shù)與問題。
《C Primer Plus》 本書全面講述了C語言編程的相關(guān)概念和知識。 全書共17章。第1.2章學(xué)習(xí)C語言編程所需的預(yù)備知識。第3到15章介紹了C語言的相關(guān)知識,包括數(shù)據(jù)類型、格式化輸入輸出、運(yùn)算符、表達(dá)式、流程控制語句、函數(shù)、數(shù)組和指針、字符串操作、內(nèi)存管理、位操作等等,知識內(nèi)容都針對C99標(biāo)準(zhǔn);另外,第10章強(qiáng)化了對指針的討論,第12章引入了動態(tài)內(nèi)存分配的概念,這些內(nèi)容更加適合讀者的需求。第16章和第17章討論了C預(yù)處理器和C庫函數(shù)、高級數(shù)據(jù)表示(數(shù)據(jù)結(jié)構(gòu))方面的內(nèi)容。附錄給出了各章后面復(fù)習(xí)題、編程練習(xí)的答案和豐富的C編程參考資料。
然后呢,做些練習(xí)題,培養(yǎng)自己的興趣和編程思想
祝您學(xué)業(yè)有成
聲明:本網(wǎng)站尊重并保護(hù)知識產(chǎn)權(quán),根據(jù)《信息網(wǎng)絡(luò)傳播權(quán)保護(hù)條例》,如果我們轉(zhuǎn)載的作品侵犯了您的權(quán)利,請在一個月內(nèi)通知我們,我們會及時刪除。
蜀ICP備2020033479號-4 Copyright ? 2016 學(xué)習(xí)鳥. 頁面生成時間:2.588秒