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