C語(yǔ)言入門(mén)的基本學(xué)習(xí)方法
C語(yǔ)言入門(mén)的基本學(xué)習(xí)方法
(資料圖片僅供參考)
篇一:C語(yǔ)言入門(mén)的基本學(xué)習(xí)方法
一、C語(yǔ)言入門(mén)的基本學(xué)習(xí)方法
《C語(yǔ)言》的內(nèi)容很豐富,有的部分涉及到的細(xì)節(jié)很多,如硬件知識(shí)和數(shù)據(jù)結(jié)構(gòu)知識(shí)等,自學(xué)時(shí)不可能面面俱到,否則必然會(huì)顧此失彼,反而抓不住主要矛盾。筆者認(rèn)為對(duì)初學(xué)C語(yǔ)言的考生,開(kāi)始不必在每一個(gè)細(xì)節(jié)上過(guò)于死摳,而應(yīng)當(dāng)把主要精力放在最基本、最常用的那些部份,待有一定的基礎(chǔ)后再深入到一些非主要的細(xì)節(jié),有一些細(xì)節(jié)需要通過(guò)較長(zhǎng)期的實(shí)踐才能熟練掌握。初學(xué)C語(yǔ)言時(shí),可能會(huì)遇到有些問(wèn)題理解不透,請(qǐng)不要?dú)怵H,鼓足勇氣向后面的內(nèi)容學(xué)習(xí),待學(xué)完后面的章節(jié)知識(shí),前面的問(wèn)題也就迎刃而解了。學(xué)習(xí)C語(yǔ)言始終要記住―曙光在前頭‖和―千金難買(mǎi)回頭看‖,―千金難買(mǎi)回頭看‖是學(xué)習(xí)知識(shí)的重要方法,就是說(shuō),學(xué)習(xí)后面的知識(shí),不要忘了回頭弄清遺留下的問(wèn)題和加深理解前面的知識(shí),這是學(xué)習(xí)的人最不易做到的,然而卻又是最重要的。比如:在C語(yǔ)言中最典型的是關(guān)于結(jié)構(gòu)化程序設(shè)計(jì)構(gòu)思,不管是那種教材,一開(kāi)始就強(qiáng)調(diào)這種方法,這時(shí)也許你不能充分體會(huì),但是學(xué)到函數(shù)時(shí),再回頭來(lái)仔細(xì)體會(huì),溫故知新,理解它就沒(méi)有那么難了。學(xué)習(xí)C語(yǔ)言就是要經(jīng)過(guò)幾個(gè)反復(fù),才能前后貫穿,積累應(yīng)該掌握的C知識(shí)。
下面我們就圍繞《C語(yǔ)言》的特點(diǎn)、以98年全國(guó)等級(jí)考試
大綱為基礎(chǔ),把里面的重點(diǎn)和難點(diǎn),從宏觀和微觀兩個(gè)角度,就如何學(xué)好這門(mén)課程提供一些建議和方法,供大家學(xué)習(xí)時(shí)參考。
首先從宏觀上談一談自學(xué)C語(yǔ)言的方法。
我認(rèn)為要學(xué)好C語(yǔ)言首先必須了解等級(jí)考試C語(yǔ)言的大綱和內(nèi)容,以及各種輔助材料的用途,這是學(xué)好C的基礎(chǔ)。從以前的經(jīng)驗(yàn)以及考網(wǎng)上的一些信息可知,要自學(xué)C語(yǔ)言必須準(zhǔn)備以下資料:
1、 教材:大家現(xiàn)在都公認(rèn)是清華大學(xué)譚浩強(qiáng)主編的那本,當(dāng)然有其他的也可以,如高校出版社的。
2、 習(xí)題集:我認(rèn)為清華大學(xué)的《C語(yǔ)言樣題匯編》不錯(cuò)。書(shū)后面附有答案。
3、 上機(jī)練習(xí):我認(rèn)為南開(kāi)大學(xué)的那個(gè)可以,最好是在考前從頭到尾做一遍。答案可以去考網(wǎng)下載區(qū)下載。
4、 大綱:這個(gè)肯定要的,可以在考網(wǎng)二級(jí)版那里去下,然后打印出來(lái)。
5、 自學(xué)計(jì)劃:為了做到有計(jì)劃有目的地學(xué)習(xí)C語(yǔ)言,大家可以根據(jù)自己的學(xué)習(xí)(或工作)情況,制定一個(gè)自學(xué)計(jì)劃,循序漸進(jìn)地學(xué)習(xí)。
6、 模擬盤(pán):為了更好地熟悉考場(chǎng)環(huán)境,下一個(gè)模擬盤(pán)是必不可少的,可以在。下載,注意,在下載時(shí)要把鎖匙盤(pán)一起下回來(lái),否則不能進(jìn)入考試環(huán)境。
7、 教學(xué)光盤(pán):如果能買(mǎi)到C語(yǔ)言的教學(xué)光盤(pán),那當(dāng)然更好,這樣可以更直觀地學(xué)習(xí)C語(yǔ)言了。
下面從微觀上針對(duì)C語(yǔ)言的幾個(gè)重點(diǎn)和難點(diǎn),逐個(gè)談?wù)劸唧w的自學(xué)方法。
二 如何學(xué)習(xí)C語(yǔ)言的運(yùn)算符和運(yùn)算順序
C語(yǔ)言的運(yùn)算功能十分豐富,運(yùn)算種類(lèi)遠(yuǎn)多于其它程序設(shè)計(jì)語(yǔ)言。因此,當(dāng)多種不同運(yùn)算組成一個(gè)運(yùn)算表達(dá)式,即一個(gè)運(yùn)算式中出現(xiàn)多種運(yùn)算符時(shí),運(yùn)算的優(yōu)先順序和結(jié)合規(guī)則顯得十分重要。
初學(xué)者往往對(duì)此感到非常困難,覺(jué)得C語(yǔ)言學(xué)習(xí)太繁雜,其實(shí)只要我們對(duì)此合理進(jìn)行分類(lèi),找出它們與我們?cè)跀?shù)學(xué)中所學(xué)到運(yùn)算之間的不同點(diǎn)之后,記住這些運(yùn)算也就不困難了,有些運(yùn)算符在理解后更會(huì)牢記心中,將來(lái)用起來(lái)得心應(yīng)手,而有些可暫時(shí)放棄不記,等用到時(shí)再記不遲。
下面是所有的運(yùn)算符按優(yōu)先級(jí)不同分類(lèi)列表:(對(duì)不起,因?yàn)楸砀耧@示不正常,已被我刪除大家可以看書(shū)上的)
表中列出15種優(yōu)先級(jí)的運(yùn)算符,從高到低,優(yōu)先級(jí)為1 ~ 15,最后邊一欄是結(jié)合規(guī)則,除第2、3級(jí)和第14級(jí)為從右至左結(jié)合外,其它都是從左至右結(jié)合,它決定同級(jí)運(yùn)算符的運(yùn)算順序。
下面我們通過(guò)幾個(gè)例子來(lái)說(shuō)明:
(1) 3*20/4%10 這個(gè)表達(dá)式中出現(xiàn)3種運(yùn)算符,是同級(jí)運(yùn)算符,運(yùn)算順序按從左至右結(jié)合,因此先計(jì)算3 * 20=60,然后被4除,結(jié)果為15,最后是%(求余數(shù))運(yùn)算,所以表達(dá)式的最終結(jié)果為15%10 = 5
(2)a = 3;b = 5;c =++ a* b ;d =a + +* b;
例子中的―;‖是C語(yǔ)言的語(yǔ)句分隔符,執(zhí)行順序?yàn)閺淖蟮接遥?/p>
第1條語(yǔ)句執(zhí)行后a的值為3,第2條語(yǔ)句執(zhí)行后b的值為5,第3條語(yǔ)句中有兩個(gè)運(yùn)算符前置+ +和*,按表中所列順序,+ +先執(zhí)行,*后執(zhí)行,所以+ + a執(zhí)行后,a的值為4,由于+ +為前置運(yùn)算,所以a的值4參與運(yùn)算,C的值為20,最后執(zhí)行第4條語(yǔ)句,由于a + +為后置運(yùn)算,所以a值為4參與運(yùn)算,使得d的值仍為20,而a參與運(yùn)算后其值加1,值為5。
這個(gè)例子執(zhí)行后,a的值為5,b的值為5,c的值為20,d的值也是20。
(3)a = 3,b = 5,b+ = a,c = b* 5
例子中的―,‖是逗號(hào)結(jié)合運(yùn)算,上式稱(chēng)為逗號(hào)表達(dá)式,自左向右結(jié)合,最后一個(gè)表達(dá)式的結(jié)果值就是逗號(hào)表達(dá)式的結(jié)果,所以上面的逗號(hào)表達(dá)式結(jié)果為40,a的值為3,b的值為8,c的值為40。
三、如何學(xué)習(xí)C語(yǔ)言的四種程序結(jié)構(gòu)
篇二:淺談C語(yǔ)言學(xué)習(xí)方法
淺談C語(yǔ)言學(xué)習(xí)方法
本人是一名windows程序?qū)懽鲉T,使用的語(yǔ)言是C語(yǔ)言.其他語(yǔ)言了解一點(diǎn)點(diǎn),但并不擅長(zhǎng).可能對(duì)于初學(xué)者來(lái)說(shuō),首先就是選擇一門(mén)程序設(shè)計(jì)語(yǔ)言.當(dāng)然,今天我將要說(shuō)的不是這方面.每種語(yǔ)言都有它所擅長(zhǎng)的領(lǐng)域與層面.當(dāng)然對(duì)于其他非C語(yǔ)言我是一名門(mén)外汗,我也不會(huì)站在C語(yǔ)言的立場(chǎng)去談?wù)撈渌魏我婚T(mén)語(yǔ)言.好了,在開(kāi)始進(jìn)入正題之前,我想談?wù)剛€(gè)人對(duì)C的一些看法:
C語(yǔ)言是一種早期的計(jì)算機(jī)語(yǔ)言,最初誕生目的是為了提供一種基于UNIX系統(tǒng)的工作語(yǔ)言.但是,后來(lái)卻被越來(lái)越多的人發(fā)現(xiàn)它的優(yōu)點(diǎn)與潛力.C本身比較接近底層,適合開(kāi)發(fā)系統(tǒng)軟件甚至是操作系統(tǒng).我個(gè)人也認(rèn)為它是界于高級(jí)語(yǔ)言與匯編語(yǔ)言之間的中級(jí)語(yǔ)言.C語(yǔ)言是一門(mén)結(jié)構(gòu)化語(yǔ)言(我認(rèn)為主要是指它的控制結(jié)構(gòu)如:if if-else while for等等).C程序設(shè)計(jì)上有提到"自頂向下,逐步深入".以函數(shù)為原子功能模塊.對(duì)于大型的程序來(lái)說(shuō)模塊化是很重要的,有一句話(huà)說(shuō)的很好"優(yōu)質(zhì)的程序首先就是便與人們之間的相互討論與交流,其次才是執(zhí)行效率".當(dāng)然我個(gè)人認(rèn)為任何一名程序?qū)懽髡?都應(yīng)該養(yǎng)成一種特定的思維方式,以程序的思維方式來(lái)思考程序的實(shí)現(xiàn).前提就是要足夠的來(lái)了解計(jì)算機(jī)底層技術(shù).要不我想就連學(xué)習(xí)都是很困難的,凡事都是一個(gè)思路的問(wèn)題嘛.標(biāo)準(zhǔn)的來(lái)衡量,C應(yīng)該算是高級(jí)語(yǔ)言陣營(yíng)的一份子.可很多有C語(yǔ)言開(kāi)發(fā)經(jīng)驗(yàn)的程序?qū)懽髡?通常親切的稱(chēng)C為界于底級(jí)語(yǔ)言與高級(jí)語(yǔ)言之間的中級(jí)計(jì)算機(jī)語(yǔ)言.當(dāng)然不是因?yàn)镃比高級(jí)語(yǔ)言要差,之所以這么認(rèn)為是因?yàn)镃既具有高級(jí)語(yǔ)言的結(jié)構(gòu)化與可理解性又具有低級(jí)語(yǔ)言的高效率.同時(shí)C的移植性也是非常不錯(cuò)的,大家應(yīng)該知道,越是接近硬件,接近底層的語(yǔ)言就越加的依賴(lài)硬件環(huán)境,也就是我們所說(shuō)的設(shè)備相關(guān)性.C這一點(diǎn)做的是非常棒的.說(shuō)了這些,在從另一個(gè)角度去分析C語(yǔ)言.當(dāng)然每種語(yǔ)言都有它自身的優(yōu)缺點(diǎn),C也一樣.比如在現(xiàn)在高級(jí)語(yǔ)言與頂層技術(shù)的角度來(lái)看的話(huà),C最大的缺陷就是Data與算法的分離.舉一個(gè)例子: 對(duì)于一個(gè)擁有幾千行甚至上萬(wàn)行Code的程序來(lái)說(shuō),如果修改Data,比如我在Structure中增加一個(gè)字段,可能為此我的整個(gè)程序都要改動(dòng),這使得程序的可重用性大大降低.開(kāi)發(fā)周期也大大的延長(zhǎng).但是在底層的角度來(lái)看這也正是C的優(yōu)點(diǎn).我為什么要這么說(shuō)呢?我個(gè)人認(rèn)為在求解與實(shí)現(xiàn)一個(gè)小問(wèn)題的時(shí)候,我們可以寫(xiě)出一個(gè)通用的模塊處理不同的Data.當(dāng)然比如某些經(jīng)常用到的,基于數(shù)據(jù)結(jié)構(gòu)的一些常用算法我們可以寫(xiě)出來(lái)在開(kāi)發(fā)的時(shí)候我們可以直接把預(yù)先編寫(xiě)的模塊插入到我們的程序中去,這不也是大大低了開(kāi)發(fā)周期嗎?初學(xué)者完全可以根據(jù)自己的需求來(lái)編寫(xiě)一個(gè)自定義庫(kù).好了,說(shuō)了這些,有些地方我理解錯(cuò)了,還請(qǐng)各位指出來(lái),交流是很重要的,前提是要把自己的心態(tài)放平.下面我將談?wù)摫締?wèn)的重點(diǎn),也就是如何來(lái)學(xué)習(xí)C語(yǔ)言,是給那些初學(xué)者讀的.
正題部分:
有人可能會(huì)說(shuō):學(xué)習(xí)還用你教啊,誰(shuí)沒(méi)上過(guò)學(xué)啊.其實(shí)我今天要說(shuō)的只是,站在一個(gè)過(guò)來(lái)人的角度,來(lái)分析與解釋學(xué)習(xí)C語(yǔ)言的過(guò)程中比較困難的地方.當(dāng)然我個(gè)人也會(huì)對(duì)比較具體的問(wèn)題進(jìn)行解釋(個(gè)人看法).我一直在強(qiáng)調(diào)個(gè)人看法,我是想讓大家明白,對(duì)于同一個(gè)問(wèn)題大家可能都很難達(dá)成統(tǒng)一的意見(jiàn),希望批評(píng)的時(shí)候客氣點(diǎn)就好嘍!
初學(xué)者該看哪些書(shū)來(lái)入門(mén):
在學(xué)習(xí)C語(yǔ)言之前,首先就要選擇一本教材,對(duì)于初學(xué)者,我個(gè)人并不建議去讀電子書(shū)籍,最好是買(mǎi)紙質(zhì)書(shū)來(lái)學(xué)習(xí).比如比較有名的"C程序設(shè)計(jì)"就很不錯(cuò),尤其是第二版.我也看過(guò),比較適合中國(guó)人來(lái)初學(xué).整本書(shū)都在全面系統(tǒng)的講解C的語(yǔ)法結(jié)構(gòu),構(gòu)成C的語(yǔ)言元素包括:數(shù)據(jù)類(lèi)型,支持的運(yùn)算符,標(biāo)識(shí)符(是由程序員按照命名規(guī)則起的名字,用于變量名,函數(shù)名,宏名等等),關(guān)鍵字(編譯系統(tǒng)用于實(shí)現(xiàn)C內(nèi)部功能的詞,比如:轉(zhuǎn)向goto和中斷break等等)等.看完這本書(shū)你基本上可以寫(xiě)一些簡(jiǎn)單的小程序,當(dāng)然是DOS下的程序.如果你想在進(jìn)一步深入學(xué)習(xí)C的話(huà),可以看"C陷阱與缺陷"這本書(shū).寫(xiě)這本書(shū)的作者是在Bell工作對(duì)C是非常精通的,應(yīng)該算是大師級(jí)的人物了.如果你暫時(shí)不想深入C的話(huà),也沒(méi)問(wèn)題,因?yàn)榇藭r(shí)你完全可以把C當(dāng)作一種編程工具來(lái)使用,你要做的就是多寫(xiě)Code來(lái)讓自己熟悉C語(yǔ)言.經(jīng)驗(yàn)是非常重要的,"經(jīng)驗(yàn)是檢驗(yàn)真理的唯一方法".當(dāng)然你不會(huì)紙上談兵,如果你有過(guò)多
的開(kāi)發(fā)經(jīng)驗(yàn)的話(huà),就知道在紙上或最初的設(shè)想的Code拿到計(jì)算機(jī)上來(lái)實(shí)現(xiàn),最終會(huì)發(fā)現(xiàn)有很多地方都是不合理的,之前是沒(méi)有辦法想象到的.在初學(xué)C的過(guò)程中,比如你會(huì)看"C程序設(shè)計(jì)"來(lái)初學(xué)C,當(dāng)你學(xué)完每一章的時(shí)候要把習(xí)題來(lái)完成,這里就是考驗(yàn)?zāi)銓W(xué)到的知識(shí)了,看看你應(yīng)用能力怎么樣?尤其是程序設(shè)計(jì)題目,比較有意思.哪里不懂了.可以翻回去看書(shū)中的解釋.如果沒(méi)有解釋或你還是不明白,可以去問(wèn)別人,與其他人交流. bbs,QQ或Google.直到你弄明白為止.當(dāng)你把問(wèn)題最終解決的時(shí)候,我敢打賭,此時(shí)你一定很興奮,或者是比較興奮.這個(gè)時(shí)候知識(shí)已經(jīng)在你的大腦里了.
下面我為你推薦幾本不錯(cuò)的關(guān)于C語(yǔ)言籍:
C編程規(guī)范
C語(yǔ)言大全第四版 (個(gè)人感覺(jué)不錯(cuò),里面有提及C標(biāo)準(zhǔn)方面的東西)
C和指針
The C programming Language (經(jīng)典著作)
如果你要看電子書(shū)的話(huà),以上幾本書(shū)在Google上很容易就可以找到.
關(guān)于C語(yǔ)言的初步理解:
對(duì)于初學(xué)者,會(huì)有太多的疑問(wèn),原因是你的知識(shí)面太小.現(xiàn)在我為你解釋一些C相關(guān)的東西.目的是讓你能夠有一個(gè)大致清晰的方向,來(lái)給自己安排學(xué)習(xí)計(jì)劃.專(zhuān)業(yè)的來(lái)說(shuō),我們是或?qū)⑹且幻绦騿T,程序員當(dāng)然就是要開(kāi)發(fā)程序了.對(duì)于軟件開(kāi)發(fā)方面我來(lái)解釋下術(shù)語(yǔ):
C,C++,ASM,Basic,Java 這些是計(jì)算機(jī)語(yǔ)言.計(jì)算機(jī)語(yǔ)言很多,我就不多說(shuō)了.
Visual C++,Visual Basic, Microsoft研發(fā)的開(kāi)發(fā)環(huán)境,開(kāi)發(fā)環(huán)境包括:編譯器,庫(kù)函數(shù)(每種C語(yǔ)言編譯器都支持標(biāo)準(zhǔn)庫(kù),同時(shí)它們也會(huì)擴(kuò)展自己的庫(kù),所以很多比較以來(lái)庫(kù)函數(shù)實(shí)現(xiàn)的程序員,在轉(zhuǎn)向不同的開(kāi)發(fā)環(huán)境的時(shí)候最初總是不使用的,會(huì)遇到很多問(wèn)題),一些資源模板等等.Visual 就是可視的意思,后面的就是語(yǔ)言.Visual C++支持C與C++2種語(yǔ)言,是根據(jù)文件的擴(kuò)展名來(lái)判斷采用哪種編譯內(nèi)核.
什么是"面向?qū)ο?與"面向過(guò)程"? 其實(shí)是2種完全不同的程序設(shè)計(jì)思想,C語(yǔ)言是面向過(guò)程語(yǔ)言,而C++是面向?qū)ο笳Z(yǔ)言.在面向?qū)ο蟮恼Z(yǔ)言中有"類(lèi)(Class)"這個(gè)東西.C中沒(méi)有.對(duì)象是由類(lèi)來(lái)派生的一個(gè)實(shí)例,相反類(lèi)就象是一個(gè)模板.
什么是SDK? SDK就是軟件開(kāi)發(fā)工具包(Software Development Kit).指的范圍比較廣,通俗的說(shuō),凡是能夠與軟件開(kāi)發(fā)過(guò)程占上邊的東西都屬于.比如:庫(kù)文件,參考資料,接口函數(shù),當(dāng)然語(yǔ)言也應(yīng)該屬于.
DDK就是設(shè)備驅(qū)動(dòng)程序開(kāi)發(fā)工具包.
Turbo C: 這是一個(gè)比較精致的C語(yǔ)言編譯器.
理論上來(lái)說(shuō)任何一門(mén)語(yǔ)言都可以在任何一種操作系統(tǒng)上運(yùn)行,前提是操作系統(tǒng)要支持.也就是我們所說(shuō)的應(yīng)用程序接口,比如
Window API(Application Programming Interface),其實(shí)是Microsoft內(nèi)部定義的接口函數(shù)用于實(shí)現(xiàn)一些Windows內(nèi)部的功能.一些對(duì)象的描述術(shù)語(yǔ),在不同平臺(tái)上是不同的,比如:Windows下的"調(diào)用",經(jīng)常被稱(chēng)為"呼叫","返回"被稱(chēng)為"傳回".
什么是"算法"? 你最初只需要知道算法實(shí)際上就是對(duì)特定的Data進(jìn)行運(yùn)算的一段代碼而已.也可以認(rèn)為在求解一道題目的時(shí)候,采取的方法與步驟的總稱(chēng).對(duì)于基本的C程序來(lái)說(shuō),實(shí)際上就是由Data與算法來(lái)組成的.
什么是"數(shù)據(jù)結(jié)構(gòu)"? 如果要是系統(tǒng)的講解,還需要一本書(shū)"數(shù)據(jù)結(jié)構(gòu)",簡(jiǎn)單的說(shuō):是程序要處理的數(shù)據(jù)在內(nèi)存中的存儲(chǔ)與組織的方式,分為:物理結(jié)構(gòu)與邏輯結(jié)構(gòu).邏輯結(jié)構(gòu)就是我們抽象化以后得到的大腦影象.
什么是"函數(shù)庫(kù)"? 它們以文件的形式存儲(chǔ),是預(yù)先定義好的函數(shù)的集合,我們的程序可以直接調(diào)用.當(dāng)然前提是要包含它的頭文件(庫(kù)函數(shù)的原型聲明).這些函數(shù)是在靜態(tài)連接期間組成到.exe文件中去的.Windows又存在另一種庫(kù),叫做動(dòng)態(tài)連接庫(kù)(DLL).
GUI: 也就是"圖形用戶(hù)界面",就是我們?cè)赪indows上看到的,存在:菜單欄,滾動(dòng)條與顯示區(qū)域的窗口.
GDI: 圖形設(shè)備接口,從程序?qū)懽髡叩慕嵌葋?lái)看,其實(shí)GDI就是由上百個(gè)函數(shù)與數(shù)據(jù)形態(tài)和一些相關(guān)的數(shù)據(jù)結(jié)構(gòu)所組成的.
學(xué)習(xí)C語(yǔ)言的全過(guò)程:
仔細(xì)想想,實(shí)際上學(xué)習(xí)C語(yǔ)言,最初是應(yīng)該先學(xué)習(xí)C語(yǔ)言的基礎(chǔ)語(yǔ)法.也就是學(xué)習(xí)C語(yǔ)言的組成部分.一部分一部分的向下學(xué).知識(shí)要一點(diǎn)一點(diǎn)的鞏固的.本人假設(shè)你學(xué)習(xí)C語(yǔ)言是看"C程序設(shè)計(jì)".我認(rèn)為你應(yīng)該先把C程序設(shè)計(jì)仔細(xì)的看一便,這樣你應(yīng)該可以對(duì)整本書(shū)和C語(yǔ)言的整體組成結(jié)構(gòu)有個(gè)大致的清晰了解.不要認(rèn)為學(xué)習(xí)只是在看書(shū),看一便就可以了.你應(yīng)該學(xué)會(huì)記筆記,在記筆記的過(guò)程中,其實(shí)你就是在學(xué)習(xí),從知識(shí)的分析,理解,歸納,到最后以自己的思維方式記下來(lái),這整個(gè)過(guò)程就是把書(shū)中的知識(shí)抽象到你自己的腦袋里.個(gè)人感覺(jué)學(xué)習(xí)效果非常好,不懂就問(wèn),要多多與人交流,要多思考,遇到問(wèn)題自己先多想想,實(shí)在找不到問(wèn)題出在哪,在去請(qǐng)教別人,不要有不懂的地方就直接去問(wèn)別人,那樣對(duì)你沒(méi)太大的好處.其實(shí)要學(xué)會(huì)給自己安排適合自己的學(xué)習(xí)計(jì)劃,我大致來(lái)估計(jì)了一下,如果你每天能花4個(gè)小時(shí)安靜的,用心去學(xué)習(xí)的話(huà),30天之內(nèi)你應(yīng)該可以掌握C語(yǔ)言了.其實(shí)在整個(gè)學(xué)習(xí)過(guò)程中你大多數(shù)時(shí)間都在看書(shū),而不是面對(duì)電腦.在調(diào)試你的代碼之前,先在紙上把核心代碼大致寫(xiě)出來(lái),分析一下:程序的組成模塊(可以是一個(gè)函數(shù)或多個(gè)),由幾個(gè)函數(shù)來(lái)實(shí)現(xiàn),接口的封裝.采用哪種數(shù)據(jù)結(jié)構(gòu)更適合一些.關(guān)鍵在于算法.在你的最終程序發(fā)布之前,最好把你的代碼行數(shù)減到最少.不要只想著把代碼寫(xiě)多.過(guò)多的代碼對(duì)程序來(lái)說(shuō)是負(fù)擔(dān).你可以在Internet上下載一個(gè)文件(C語(yǔ)言經(jīng)典例題.chm),里面大致包含了上百個(gè)經(jīng)典的例題.每一個(gè)例題都是C語(yǔ)言某部分的典型應(yīng)用.花時(shí)間把這個(gè)文件中的所有例題代碼研究一下,最好能自己把代碼改善,以自己的方式來(lái)求解.以后你會(huì)發(fā)現(xiàn)你在寫(xiě)一些應(yīng)用程序的時(shí)候經(jīng)常會(huì)有一些算法.會(huì)涉及到我之前提到的例題.最后我認(rèn)為你可以自己來(lái)寫(xiě)C語(yǔ)言標(biāo)準(zhǔn)函數(shù),比如strcpy(); strlen();strcat();最好不要過(guò)分依賴(lài)庫(kù)函數(shù).
C語(yǔ)言學(xué)習(xí)的難點(diǎn):
現(xiàn)在應(yīng)該是已經(jīng)講到一個(gè)重點(diǎn)的環(huán)節(jié).很多網(wǎng)友都說(shuō)學(xué)習(xí)C語(yǔ)言很難,我認(rèn)為C中有些部分是比較復(fù)雜,難理解的.當(dāng)然在你具有了豐富的開(kāi)發(fā)經(jīng)驗(yàn)以后,這以不在是問(wèn)題了.下面我個(gè)人會(huì)對(duì)我認(rèn)為學(xué)習(xí)C的時(shí)候比較難學(xué)的地方進(jìn)行我自己的闡述,如果哪里不正確,還請(qǐng)各位指出:
指針的出現(xiàn):
我想有很多初學(xué)者學(xué)習(xí)到指針那一章都感覺(jué)很難,下面我就以自己的想法來(lái)解釋下指針這個(gè)特殊的數(shù)據(jù)類(lèi)型,
基本變量大家可能并不難理解,因?yàn)榛咀兞科鋬?nèi)部存儲(chǔ)了同類(lèi)型的常量,事實(shí)上指針也是變量,不過(guò)呢,這個(gè)變量和基本變量有點(diǎn)不一樣,那你又問(wèn)了:是哪里不一樣呢? 我告訴你,簡(jiǎn)單的來(lái)理解其實(shí)普通的變量?jī)?nèi)部存儲(chǔ)了同類(lèi)型的常量,而指針變量?jī)?nèi)部存儲(chǔ)的則是"同類(lèi)型變量的首地址".這樣你能夠理解嗎,是很簡(jiǎn)單的解釋,但不失本質(zhì).事實(shí)就是這樣的.如果你不理解"同類(lèi)型變量的首地址"的話(huà),我可以給你形象的來(lái)描述一下:
float Variable; //聲明一個(gè)單精度實(shí)型的變量
此時(shí),編譯器已經(jīng)給Variable分配了內(nèi)存空間,結(jié)構(gòu)如下:
__________
| |1001
|---------
| |1002
|---------
| |1003
|---------
| |1004
|---------
以上便是Variable的內(nèi)存結(jié)構(gòu)了,16位下的float占用4個(gè)字節(jié),內(nèi)存地址是線性編碼的,我們可以很容易的看出Variable的首地址就是他第一個(gè)單元的地址1001,好的,繼續(xù)向下看:
float *Pointer=&Variable; //聲明一個(gè)指向Variable的指針Pointer
_________
|1001 | 這是Pointer的內(nèi)存結(jié)構(gòu)
|_______|
我們的程序可以這樣來(lái)執(zhí)行:
Variable=1.0;
直接給Variable賦值,我們稱(chēng)為直接訪問(wèn).
也可以這樣執(zhí)行:
*Pointer=1.0;
也可以通過(guò)指針變量來(lái)賦值,前面的*是間接運(yùn)算符號(hào),意思是求Pointer內(nèi)部存儲(chǔ)地址所標(biāo)識(shí)的內(nèi)存單元.也就是Variable.此時(shí),是賦值是通過(guò)間接訪問(wèn)來(lái)實(shí)現(xiàn)的.可以這樣形象的描述:
________ (指向Variable) __________
|Pointer|------------------------------------>|Variable|
--------- ----------
以上應(yīng)該是指針實(shí)現(xiàn)的基本解釋,很多優(yōu)秀的程序?qū)懽髡叨颊f(shuō)指針是C語(yǔ)言中的精華,的確如此,很多優(yōu)秀的程序?qū)懽髡邔?xiě)程序都非常依賴(lài)指針,因?yàn)樗芊奖?實(shí)際上指針?biāo)L問(wèn)的對(duì)象是沒(méi)有限制的,他可以指向任何類(lèi)型的變量,前提是只要我們知道內(nèi)存地址.因此指針也并不安全,在開(kāi)發(fā)網(wǎng)絡(luò)程序的時(shí)候,盡量要少使用指針.下面我們?cè)趤?lái)看一下指針在數(shù)組中的使用.
數(shù)組中的指針:
簡(jiǎn)單的來(lái)解釋下數(shù)組,數(shù)組結(jié)構(gòu)在C中使用比較普遍,其實(shí)最常用的就是char 類(lèi)型的數(shù)組,主要是用于字符串操作.實(shí)際上數(shù)組是"同類(lèi)型變量的有限集合".我想這應(yīng)該不難理解吧.數(shù)組在內(nèi)存中占用連續(xù)的內(nèi)存單元(地址連續(xù)),來(lái)存儲(chǔ)數(shù)組中的每一個(gè)元素.數(shù)組是預(yù)先分配好指定長(zhǎng)度的內(nèi)存單元,供數(shù)組元素使用.它并不支持動(dòng)態(tài)內(nèi)存分配.在內(nèi)存中想要唯一的確定數(shù)組,需要2個(gè)標(biāo)識(shí):入口地址(函數(shù)名)和結(jié)束標(biāo)記("").有些語(yǔ)言并不向C語(yǔ)言這樣支持字符串結(jié)束標(biāo)記,它們必須要另外聲明一個(gè)變量來(lái)標(biāo)識(shí)尾元素的下標(biāo).那數(shù)組名其實(shí)就是這一組內(nèi)存單元的首單元,他的地址就是整個(gè)數(shù)組的入口地址.此時(shí)應(yīng)該明白了,數(shù)組名是一個(gè)指針,這樣理解沒(méi)有問(wèn)題.不錯(cuò)在具體操作的時(shí)候不允改變數(shù)組名的地址,也不符合實(shí)際要求.這樣就可以明白數(shù)組名是一個(gè)什么 const Pointer(指針常量).我們可以這樣做:
int Array[10];
int *Pointer;
Pointer=Array;
for(i=0;i<10;++i)
Pointer==i;
以上代碼應(yīng)該是沒(méi)問(wèn)題吧,同類(lèi)型的指針,完全可以勝任數(shù)組名的任務(wù).一點(diǎn)問(wèn)題沒(méi)有而且可以運(yùn)行的很好.當(dāng)然,我們可以進(jìn)一步把代碼這樣來(lái)寫(xiě):
把
for(i=0;i<10;++i)
Pointer=i;
改成
for(i=0;i<10;++i,Pointer++)
*Pointer=i;
不好意思,我記不清了,指針的++運(yùn)算是地址+1還是向后移動(dòng)一個(gè)元素的位置,如果是地址+1的話(huà),以上代碼在改成這樣: for(i=0;i<10;++i,Pointer+sizeof(int))
*Pointer=i;
如果數(shù)組類(lèi)型是char的話(huà),那就更方便了,因?yàn)樽址娲嬖谝粋€(gè)在尾元素之后的結(jié)束標(biāo)記(""),下面給出一個(gè)簡(jiǎn)單的代碼,應(yīng)用char Pointer:
char * my_strcpy(char * dst, const char * src)
{
char * cp = dst;
while( *cp++ = *src++ ); // 注意運(yùn)算符的優(yōu)先級(jí)與結(jié)合性
return( dst ); //返回新傳的指針
}
以上代碼實(shí)現(xiàn)字符傳Copy功能,代碼是不是很簡(jiǎn)潔啊.如果不需要移動(dòng)內(nèi)存塊的`話(huà),我們完全可以通過(guò)交換指針(內(nèi)存地址)來(lái)實(shí)現(xiàn)排序操作,其效率應(yīng)該是很客觀的.補(bǔ)充一句:千萬(wàn)要弄清楚,指針本身與指針?biāo)赶虻淖兞坎皇且粋€(gè)單元.
篇三:C語(yǔ)言學(xué)習(xí)方法
第一個(gè)要裝進(jìn)行囊和你一起前進(jìn)是“規(guī)范的格式”,有很多教科書(shū),參考書(shū),不太注重程序的格式的問(wèn)題,寫(xiě)出的程序就象一堆堆的垃圾一樣,這也導(dǎo)致了現(xiàn)在很多人寫(xiě)的程序中有很多的廢碼,垃圾代碼,這和那些入門(mén)的書(shū)有非常大的關(guān)系,要把那些作者都拿來(lái)打打PP。真正的商業(yè)程序絕對(duì)是規(guī)范的,張三寫(xiě)的程序和李四的程序格式大致相同,各種標(biāo)識(shí)符的命名規(guī)則一樣,否則誰(shuí)也看不懂你寫(xiě)的程序。如果寫(xiě)出來(lái)的代碼誰(shuí)也看不懂,那絕對(duì)是垃圾。如果要把那些垃圾翻半天,勉強(qiáng)才把金子找出來(lái),那這樣的程序不如不要,還不如重新寫(xiě)過(guò),這樣,思路會(huì)更清楚一點(diǎn)。所以說(shuō),規(guī)范的格式是入門(mén)的基礎(chǔ)。那這個(gè)規(guī)范的格式包括什么呢?不少啊,要堅(jiān)持才能做到!長(zhǎng)標(biāo)志符命名,代碼縮進(jìn),一對(duì)大括號(hào)范圍不超過(guò)一屏幕,等等。
第二個(gè)要裝進(jìn)行囊的是耐心,所謂工欲善其事,必先利其器。要想成功,沒(méi)有一個(gè)相對(duì)平淡的過(guò)程是不可能的。這不僅僅指你在學(xué)習(xí)過(guò)程中要有耐心,要循序漸進(jìn),而起也說(shuō)的是另一個(gè)重要的方面:調(diào)式程序。調(diào)試是寫(xiě)程序過(guò)程中一個(gè)重要的方面,如果有人能一次寫(xiě)成程序,牛啊,而且是大牛,不光是大牛,還是老子騎的那頭青牛,凡人是做不道的!調(diào)試是每個(gè)程序必定經(jīng)歷的歷程。經(jīng)常有同學(xué)問(wèn)我:老師,我的程序完全沒(méi)錯(cuò)誤啊,都是照書(shū)抄的?。≡趺淳瓦\(yùn)行不出來(lái)呢?對(duì)于這個(gè)問(wèn)題我也看不出來(lái)!你們有問(wèn)題可以找我,找其他的老師,老師找誰(shuí)啊?李師父?那是很荒謬的!我就只好坐下來(lái)調(diào)試,這個(gè)說(shuō)實(shí)話(huà),調(diào)試是很枯燥的,所以有同學(xué)抱怨說(shuō)我操作太快,不理解為什么要這樣,為什么要那樣,我的脾氣不太好,一煩躁就會(huì)罵人地,所以,這個(gè)就需要你們自己修煉內(nèi)功了! 有了這兩個(gè)就可以了,可以出發(fā)了,估計(jì)有人說(shuō)了,英語(yǔ)和數(shù)學(xué)不要了?大家都說(shuō)大學(xué)生了,這種問(wèn)題就不要問(wèn)了嘛!你已經(jīng)用早晨和傍晚的時(shí)光學(xué)習(xí)了英語(yǔ)了,我這個(gè)沒(méi)有要去,計(jì)算機(jī)專(zhuān)業(yè)英語(yǔ)超簡(jiǎn)單,小學(xué)水平而已,記住一些專(zhuān)業(yè)詞匯就可以了!關(guān)于數(shù)學(xué),說(shuō)數(shù)學(xué)好,寫(xiě)程序就好是沒(méi)有科學(xué)根據(jù)的!我就有個(gè)同學(xué),數(shù)學(xué)回回100分,寫(xiě)程序也就是hello world的程度,不過(guò)人家現(xiàn)在是數(shù)學(xué)博士了!慚愧??!做為的大學(xué)生,而且是我們這個(gè)專(zhuān)業(yè)的大學(xué)生,已經(jīng)完全具備了寫(xiě)程序所需要的數(shù)學(xué)素養(yǎng)了!所以這個(gè)不是我們要擔(dān)心的,Ready? Go!
第一招,學(xué)什么呢?打狗棍法!呵呵
有一個(gè)偉人說(shuō)過(guò):“重復(fù)權(quán)威是成熟的必經(jīng)之路”,這是站在巨人的肩膀上的做法,
習(xí)武之人首先要學(xué)的都是各種套路,比方說(shuō)辟邪劍法,然后才能融會(huì)貫通,開(kāi)宗流派;我們學(xué)習(xí)寫(xiě)程序也要這樣來(lái),這是一個(gè)捷徑,幫你走得更遠(yuǎn)得捷徑。 運(yùn)行效果是不是很好?你學(xué)數(shù)據(jù)結(jié)構(gòu)的時(shí)候,樹(shù)啊,圖啊,你都可以這樣輸出啊,很多地方你都可以做的更好呢!
好了,到這里,我們基本解決了在學(xué)習(xí)C語(yǔ)言程序設(shè)計(jì)時(shí)的一些方法論的東西,關(guān)于具體的學(xué)習(xí)過(guò)程,如果你要我在這里給你們講指針要如何學(xué)習(xí)?函數(shù)要如何學(xué)習(xí)?那我講的內(nèi)容也不會(huì)多于任課老師的內(nèi)容,或者開(kāi)個(gè)專(zhuān)題叫“如何學(xué)好指針”,當(dāng)然,如果你愿意和我探討一下指針的本質(zhì)和高級(jí)應(yīng)用的話(huà),課后,課后??!
現(xiàn)在,我們要談最后一個(gè)問(wèn)題!我們這個(gè)專(zhuān)業(yè)的女生的比例較其他的工科專(zhuān)業(yè)還是要高一些的,不知道為什么經(jīng)常到如下的說(shuō)法:1,我是女生,我不適合寫(xiě)程序?。?,我的性格比較外向,不適合坐下來(lái)安靜的寫(xiě)程序呢!
性格外向不適合寫(xiě)程序?你們看我啊,覺(jué)得我是性格內(nèi)向的任嗎?程序員也非常需要發(fā)散的外向型思維,老比,地球上最富裕的人說(shuō),他招程序員更愿意招原來(lái)是學(xué)物理的人,因?yàn)閷W(xué)物理的人的思維可以從極大(宇宙)到極?。ㄔ樱?。所有,說(shuō)性格外向不適合寫(xiě)程序的話(huà)是懶惰的借口,是要掩蓋他不可告人的目的的接口!狂打PP!
女生又為什么不適合寫(xiě)程序呢?我到知道一個(gè)理由,對(duì)皮膚不好??!你們看我這滿(mǎn)臉滄桑的,就知道了!除此之外,還會(huì)又其他的理由嗎?英國(guó)科學(xué)家早就證明了男女的區(qū)別完全不是人們想象的那樣,很多方面女性是要超過(guò)男性的!想想以前的母系社會(huì),現(xiàn)在的惠安女!
我就見(jiàn)過(guò)一個(gè)上市公司的研發(fā)二部全是女性!,從軟件工程師到硬件工程師再到部門(mén)經(jīng)理都是女性,業(yè)績(jī)根本不輸其他的研發(fā)部門(mén),這個(gè)公司在湖南,不是我瞎掰的!
同學(xué)們,問(wèn)大家一個(gè)問(wèn)題,“二十一世紀(jì)最貴是什么?”,不錯(cuò),是人才,所以,我可以負(fù)責(zé)任地告訴大家,“不學(xué)好C語(yǔ)言,老師很生氣”,老師很生氣,后果怎么樣???是很?chē)?yán)重!
That’s all, thank you!
學(xué)習(xí)C語(yǔ)言不是一朝一夕的事情,但也不需要花費(fèi)十年時(shí)間才能精通。如何以最小的代價(jià)學(xué)習(xí)并精通C語(yǔ)言是本文的主題。請(qǐng)注意,即使是“最小的代價(jià)”,也絕不是什么捷徑,而是以最短的時(shí)間取得最多的收獲,同時(shí)也意味著你需要經(jīng)歷艱苦的過(guò)程。
一、要讀就讀好書(shū),否則不如不讀
所有初學(xué)者面臨的第一個(gè)問(wèn)題便是:如何選擇教材。好的開(kāi)始是成功的一半,選擇一本優(yōu)秀的教材是事半功倍的關(guān)鍵因素。不幸的是,學(xué)校通常會(huì)幫你指定一本很差勁的C語(yǔ)言課本;而幸運(yùn)的是,你還可以再次選擇。
大名鼎鼎的譚浩強(qiáng)教授出了一本《C語(yǔ)言程序設(shè)計(jì)》,據(jù)說(shuō)發(fā)行量有超過(guò)400萬(wàn),據(jù)我所知,很多學(xué)校都會(huì)推薦這本書(shū)作為C語(yǔ)言課本。雖然本人的名字(譚浩宇)跟教授僅僅一字之差,但我是無(wú)比堅(jiān)定地黑他這本書(shū)的。這本書(shū)不是寫(xiě)給計(jì)算機(jī)專(zhuān)業(yè)的學(xué)生的,而是給那些需要考計(jì)算機(jī)等級(jí)考試的其它專(zhuān)業(yè)學(xué)生看的。這本書(shū)的主要缺點(diǎn)是:例子程序非常不專(zhuān)業(yè),不能教給你程序設(shè)計(jì)應(yīng)該掌握的思考方式;程序風(fēng)格相當(dāng)?shù)夭缓?,?huì)讓你養(yǎng)成亂寫(xiě)代碼的惡習(xí);錯(cuò)誤太多,曾經(jīng)有人指出過(guò)這本書(shū)的上百個(gè)錯(cuò)誤,其中不乏關(guān)鍵的概念性錯(cuò)誤。好了,這本書(shū)我也不想說(shuō)太多了,有興趣大家可以百度一下:)
Kernighan和Ritchie的《The C Programming Language》(中譯名《C程序設(shè)計(jì)語(yǔ)言》)堪稱(chēng)經(jīng)典中的經(jīng)典,不過(guò)舊版的很多內(nèi)容都已過(guò)時(shí),和現(xiàn)在的標(biāo)準(zhǔn)C語(yǔ)言相去甚遠(yuǎn),大家一定要看最新的版本,否則不如不看。另外,即使是最經(jīng)典最權(quán)威的書(shū),也沒(méi)有辦法面面俱到,所以手邊常備一本《C語(yǔ)言參考手冊(cè)》是十分必要的。《C語(yǔ)言參考手冊(cè)》就是《C Reference Manual》,是C語(yǔ)言標(biāo)準(zhǔn)的詳細(xì)描述,包括絕大多數(shù)C標(biāo)準(zhǔn)庫(kù)函數(shù)的細(xì)節(jié),算得上是最好的標(biāo)準(zhǔn)C語(yǔ)言的工具書(shū)。順便提一句,最新的《C程序設(shè)計(jì)語(yǔ)言》是根據(jù)C89標(biāo)準(zhǔn)修訂的,而《C語(yǔ)言參考手冊(cè)》描述的是C99標(biāo)準(zhǔn),二者可能會(huì)有些出入,建議按照C99標(biāo)準(zhǔn)學(xué)習(xí)。還有一本《C和指針》,寫(xiě)得也是相當(dāng)?shù)夭诲e(cuò),英文名是《Pointers on C》,特別地強(qiáng)調(diào)指針的重要性,算是本書(shū)的一個(gè)特點(diǎn)吧。不過(guò)這本書(shū)并不十分適合初
學(xué)者,如果你曾經(jīng)學(xué)過(guò)C語(yǔ)言,有那么一些C語(yǔ)言的基礎(chǔ)但又不是很扎實(shí),那么你可以嘗試一下這本書(shū)。我相信,只要你理解了指針,C語(yǔ)言便不再神秘。
如果你已經(jīng)啃完了一本C語(yǔ)言教材,想要更進(jìn)一步,那么有兩本書(shū)你一定要看。首先是《C Traps and Pitfalls》(中譯名《C陷井與缺陷》),很薄的一本小冊(cè)子,內(nèi)容非常非常地有趣。要注意一點(diǎn),這本書(shū)是二十多年前寫(xiě)成的,里面提到的很多C語(yǔ)言的缺陷都已被改進(jìn),不過(guò)能夠了解一些歷史也不是什么壞事。然后你可以挑戰(zhàn)一下《Expert C Programming》(中譯名《C專(zhuān)家編程》),書(shū)如其名,這本書(shū)頗具難度,一旦你仔細(xì)讀完并能透徹理解,你便可以放心大膽地在簡(jiǎn)歷上寫(xiě)“精通C語(yǔ)言”了。
切記一個(gè)原則,不要讀自己目前還看不懂的書(shū),那是浪費(fèi)生命。如果你看不懂,那你一定是缺失了某些必需基礎(chǔ)知識(shí)。此時(shí),你要仔細(xì)分析自己需要補(bǔ)充哪些內(nèi)容,然后再去書(shū)店尋找講述的這些內(nèi)容的書(shū)籍。把基礎(chǔ)知識(shí)補(bǔ)充完畢再回頭來(lái)學(xué)習(xí),才會(huì)真正的事半功倍。
二、Unix/Linux還是Windows,這是個(gè)很大的問(wèn)題
不同的編程環(huán)境會(huì)造就出不同思維的程序員。Windows的程序員大多依賴(lài)集成開(kāi)發(fā)環(huán)境,比如Visual Studio,而Unix程序員更加鐘愛(ài)Makefile與控制臺(tái)。顯而易見(jiàn),集成開(kāi)發(fā)環(huán)境更容易上手,在Windows上學(xué)習(xí)C語(yǔ)言,只需要會(huì)按幾個(gè)基本的Visutal C++工具欄按鈕就可以開(kāi)始寫(xiě)Hello, World!了,而在Unix下,你需要一些控制臺(tái)操作的基本知識(shí)。有人也許認(rèn)為Unix的環(huán)境更簡(jiǎn)潔,但習(xí)慣的力量是很大的,大家都很熟悉Windows的基本操作,而為了學(xué)習(xí)C語(yǔ)言去專(zhuān)門(mén)裝一個(gè)Unix系統(tǒng),似乎有點(diǎn)不劃算。
對(duì)于一個(gè)只懂得Windows基本操作、連DOS是什么都不知道的新手而言,盡快做一些有趣而有意義的事情才是最重要的。用C語(yǔ)言寫(xiě)一個(gè)小程序遠(yuǎn)比學(xué)習(xí)ls、cat等命令有趣,況且我們要專(zhuān)注于C語(yǔ)言本身,就不得不暫時(shí)忽略一些東西,比如編譯鏈接的過(guò)程、Makefile的寫(xiě)法等等等等。
三、萬(wàn)事俱備,你就是東風(fēng)
書(shū)已選定,環(huán)境配置完成,正所謂萬(wàn)事俱備,只欠你自己的努力了。請(qǐng)從書(shū)的前言開(kāi)始,仔細(xì)地閱讀手頭的教材,很多人看書(shū)喜歡直接從第一章開(kāi)始看,這是錯(cuò)誤的做法。前言是作者對(duì)整本書(shū)的大體介紹,作者一般會(huì)告訴你需要什么基礎(chǔ)才能夠順利閱讀本書(shū),這可以幫助你檢驗(yàn)自己的基礎(chǔ)知識(shí)是否已經(jīng)具備。看完前言,還要瀏覽一下目錄,了解一下書(shū)的整體結(jié)構(gòu),順便給自己安排一下學(xué)習(xí)計(jì)劃。
學(xué)習(xí)C語(yǔ)言,必需注意每一個(gè)細(xì)節(jié),書(shū)上的例子代碼一定要自己親自敲一遍,編譯執(zhí)行輸出都跟書(shū)上說(shuō)的一致才能算是學(xué)完了一個(gè)例子,如果不一致,就要仔細(xì)找原因。出了書(shū)本上有的例子,自己還要“創(chuàng)造”一些例子,比如學(xué)習(xí)運(yùn)算符優(yōu)先級(jí)的時(shí)候,可以寫(xiě)幾個(gè)相同的表達(dá)式,在不同的位置加上括號(hào),看看有哪些不同的行為,比如*p++和(*p)++,又比如a = b == c、(a = b) == c和a = (b == c)等等。自己抄的書(shū)上的例子以及改造之后的例子,還有自己“創(chuàng)造”的例子,都應(yīng)該仔細(xì)地歸類(lèi)保存,并且要在源代碼中寫(xiě)上簡(jiǎn)短的注釋?zhuān)U述這個(gè)例子的意圖。
例子之后就是習(xí)題了,我建議初學(xué)者把所有的習(xí)題都獨(dú)立做一遍,然后對(duì)照答案的代碼,看看自己的代碼有那些不足,再試著修改自己的代碼。很多人不重視習(xí)題,這是極大的錯(cuò)誤,因?yàn)樽髡咄ǔ?huì)在習(xí)題中說(shuō)明一些重要的道理,而不是單純地檢驗(yàn)前面的知識(shí)。
也許你認(rèn)為這樣學(xué)習(xí)太慢,其實(shí)不然。學(xué)得細(xì)致就不用走回頭路,等你學(xué)到后面才發(fā)現(xiàn)自己前面沒(méi)搞清楚,那才是真的得不償失。一般說(shuō)來(lái),整本書(shū)讀完,你應(yīng)該完成數(shù)千行乃至上萬(wàn)行的代碼,無(wú)論是原封不動(dòng)照抄書(shū)上的,還是自己心血來(lái)潮寫(xiě)就的,都是今后繼續(xù)學(xué)習(xí)的一筆財(cái)富。以我自己舉例,閱讀《Windows核心編程》時(shí)(我只閱讀了3/4的內(nèi)容),除了抄書(shū)上的代碼,還自己寫(xiě)了很多例子,一共有5574行(用unix下的wc工具統(tǒng)計(jì)),時(shí)隔多日,我早已記不清Windows的系統(tǒng)編程了,但只要花幾分鐘翻出以前的代碼看看,便會(huì)重新了然于胸。所謂好記性不如爛筆頭,就是這個(gè)道理。
篇四:C語(yǔ)言學(xué)習(xí)方法
初學(xué)者遇到最多的困惑是:上課也能聽(tīng)懂,書(shū)上的例題也能看明白,可是到自己動(dòng)手做編程時(shí),卻不知道如何下手。發(fā)生這種現(xiàn)象的原因有三個(gè):
一、所謂的看懂聽(tīng)明白,只是很膚淺的語(yǔ)法知識(shí),而我們編寫(xiě)的程序或軟件是要根據(jù)要解決問(wèn)題的實(shí)際需要控制程序的流程,如果你沒(méi)有深刻地理解C語(yǔ)言的語(yǔ)句的執(zhí)行過(guò)程(或流程),你怎么會(huì)編寫(xiě)程序解決這些實(shí)際問(wèn)題呢?
二、用C語(yǔ)言編程解決實(shí)際問(wèn)題,所需要的不僅僅是C語(yǔ)言的編程知識(shí),還需要相關(guān)的專(zhuān)業(yè)知識(shí)。例如,如果你不知道長(zhǎng)方形的面積公式,即使C語(yǔ)言學(xué)得再好你也編不出求長(zhǎng)方形的面積的程序來(lái)。
三、C語(yǔ)言程序設(shè)計(jì)是一門(mén)實(shí)踐性很強(qiáng)的課程,“紙上談兵”式的光學(xué)不練是學(xué)不好C語(yǔ)言的。例如,大家都看過(guò)精彩自行車(chē)雜技表演,假如,你從來(lái)沒(méi)有騎過(guò)自行車(chē),光聽(tīng)教練講解相關(guān)的知識(shí)、規(guī)則、技巧,不要說(shuō)上臺(tái)表演、就是上路你恐怕都不行。
出現(xiàn)問(wèn)題原因清楚了,那么如何學(xué)習(xí)呢?請(qǐng)你看【C語(yǔ)言學(xué)習(xí)六步曲】
第一步、驗(yàn)證性練習(xí)
在這一步要求按照教材上的程序?qū)嵗M(jìn)行原樣輸入,運(yùn)行一下程序是否正確。在這一步基本掌握C語(yǔ)言編程軟件的使用方法。
第二步、照葫蘆畫(huà)瓢
在第一步輸入的C程序的基礎(chǔ)上進(jìn)行試驗(yàn)性的修改,運(yùn)行一下程序看一看程序結(jié)果發(fā)生了什么變化,分析結(jié)果變化的原因,加深新學(xué)知識(shí)點(diǎn)的理解。事實(shí)上這和第一步時(shí)同步進(jìn)行的,實(shí)現(xiàn)“輸入”加深知識(shí)的記憶,“修改”加深對(duì)知識(shí)的理解。記憶和理解是相輔相成的,相互促進(jìn)。
第三步、不看教材看是否能將前兩步的程序進(jìn)行正確地輸入并運(yùn)行。
在這一步要求不看教材,即使程序不能運(yùn)行,看能否將其改正,使其能正確運(yùn)行。目的是對(duì)前兩步的記憶、理解進(jìn)一步強(qiáng)化。
第四步、增強(qiáng)程序的調(diào)試能力
按照易出錯(cuò)的類(lèi)型,將教材中的正確的程序改成錯(cuò)誤的程序,運(yùn)行一下程序,看出現(xiàn)的錯(cuò)誤信息提示,并記下錯(cuò)誤信息,再將程序改成正確的,運(yùn)行一下程序。這樣反復(fù)修改,就能夠?qū)W習(xí)C語(yǔ)言程序發(fā)生錯(cuò)誤的原因和修改錯(cuò)誤的能力。
注意:每次只改錯(cuò)一個(gè)地方,目的是顯示發(fā)生該錯(cuò)誤的真正原因,避免一次改動(dòng)多個(gè)地方,搞清發(fā)生錯(cuò)誤的真正原因,切記?。。?!
注意:上機(jī)調(diào)試程序時(shí)要帶一個(gè)記錄本,記下英文錯(cuò)誤提示信息和解決該錯(cuò)誤問(wèn)題的方法,積累程序調(diào)試經(jīng)驗(yàn),避免在編程犯同樣的錯(cuò)誤,切記?。。?!。
第五步、研究典型的C語(yǔ)言程序,提高程序設(shè)計(jì)能力
經(jīng)過(guò)上述過(guò)程的學(xué)習(xí),我們已經(jīng)學(xué)會(huì)了C語(yǔ)言各種語(yǔ)句的流程(即計(jì)算機(jī)是如何執(zhí)行這些語(yǔ)句的過(guò)程),然后就可以研讀別人編寫(xiě)C語(yǔ)言經(jīng)典程序,看懂別人是如何解決問(wèn)題的,學(xué)習(xí)解決問(wèn)題的方法和程序設(shè)計(jì)技巧,提高自己的程序設(shè)計(jì)能力。
第六步、研究課程設(shè)計(jì)源成序,提高C語(yǔ)言程序設(shè)計(jì)能力和調(diào)試較大程序的能力。
C語(yǔ)言課程設(shè)計(jì)的目的:是讓學(xué)生綜合利用所學(xué)的C語(yǔ)言知識(shí),解決一些接近實(shí)際問(wèn)題題目,提高程序設(shè)計(jì)和調(diào)試較大程序的能力,為進(jìn)一步進(jìn)行軟件開(kāi)發(fā)打下堅(jiān)實(shí)的基礎(chǔ)。
C語(yǔ)言好學(xué)嗎?
C語(yǔ)言好學(xué)嗎?初學(xué)者常常問(wèn)這個(gè)問(wèn)題。答案很簡(jiǎn)單,對(duì)C語(yǔ)言感興趣,有強(qiáng)烈的學(xué)習(xí)欲望,就容易學(xué)。如果不感興趣,再簡(jiǎn)單的知識(shí)也學(xué)不會(huì)。
最后送C語(yǔ)言初學(xué)者一句話(huà)來(lái)共勉:首先要相信自己是有能力學(xué)好C語(yǔ)言的,然后不惜一切
代價(jià)把這種能力表現(xiàn)出來(lái),你就成功了。做任何事,何嘗不是這樣呢?
成為編程高手的二十二條軍規(guī)【轉(zhuǎn)載】
1.大學(xué)生活豐富多彩,會(huì)令你一生都難忘,但難忘有很多種,你可以學(xué)了很多東西而難忘,也會(huì)因?yàn)槭裁炊紱](méi)學(xué)到而難忘!
2.計(jì)算機(jī)專(zhuān)業(yè)是一個(gè)很枯燥的專(zhuān)業(yè),但即來(lái)之、則安之,只要你努力學(xué),也會(huì)發(fā)現(xiàn)其中的樂(lè)趣的。
3.記住:萬(wàn)丈高樓平地起!基礎(chǔ)很重要,尤其是專(zhuān)業(yè)基礎(chǔ)課,只有打好基礎(chǔ)才能學(xué)得更深。
4.C語(yǔ)言是基礎(chǔ),很重要,如果你不學(xué)好C語(yǔ)言,那么什么高級(jí)語(yǔ)言你都學(xué)不好。
8.學(xué)習(xí)編程的秘訣是:編程,編程,再編程;
9.認(rèn)真學(xué)習(xí)每一門(mén)專(zhuān)業(yè)課,那是你今后的飯碗。
10.在學(xué)校的實(shí)驗(yàn)室就算你做錯(cuò)一萬(wàn)次程序都不會(huì)有人罵你,如果在公司你試試看!所以多去實(shí)驗(yàn)室上機(jī),現(xiàn)在錯(cuò)得多了,畢業(yè)后就錯(cuò)得少了。
13.你會(huì)買(mǎi)好多參考書(shū),那么請(qǐng)把書(shū)上的程序例子親手輸入到電腦上實(shí)踐,即使配套光盤(pán)中有源代碼。
14.VC、C#、.NET這些東西都會(huì)過(guò)時(shí),不會(huì)過(guò)時(shí)的是數(shù)據(jù)結(jié)構(gòu)和優(yōu)秀的算法!
15.記?。簳?shū)到用時(shí)方恨少。不要讓這種事發(fā)生在你身上,在學(xué)校你有充足的時(shí)間和條件讀書(shū),多讀書(shū),如果有條件多讀原版書(shū),你要知道,當(dāng)一個(gè)翻譯者翻譯一本書(shū)時(shí),他會(huì)不知不覺(jué)把他的理念寫(xiě)進(jìn)書(shū)中,那本書(shū)就會(huì)變得像雞肋!
16.我還是強(qiáng)調(diào)認(rèn)真聽(tīng)專(zhuān)業(yè)課,因?yàn)橛行┱n像《數(shù)據(jù)結(jié)構(gòu)》、《編譯原理》、《操作系統(tǒng)》等等,這種課老師講一分鐘能讓你明白的內(nèi)容,你自己看要看好幾個(gè)月,有的甚至看了好幾年都看不明白。
17.抓住在學(xué)校里的各種實(shí)踐的機(jī)會(huì),要為自己積累經(jīng)驗(yàn),就業(yè)時(shí)經(jīng)驗(yàn)比什么都有用。
18.多去圖書(shū)館,每個(gè)學(xué)校的圖書(shū)館都有很多好書(shū)等你去看!
20.如果你決定了要當(dāng)一個(gè)好的程序員,那么請(qǐng)你放棄游戲,除非你是那種每天只要玩游戲就能寫(xiě)出好程序的天才!
21.你要有足夠的韌性和毅力! 22.找到只屬于你自己的學(xué)習(xí)方法。不要盲目的追隨別人的方法,適合自己的才是最好的!
_____________________________________________________________________
成為編程高手的八大奧秘
1、扎實(shí)的基礎(chǔ)
4、不鉆牛角尖
當(dāng)你遇到障礙的時(shí)候,不妨?xí)簳r(shí)遠(yuǎn)離電腦,看看窗外的風(fēng)景,聽(tīng)聽(tīng)輕音樂(lè),和朋友聊聊天。當(dāng)我遇到難題的時(shí)候會(huì)去玩游戲,當(dāng)負(fù)責(zé)游戲的那部分大腦細(xì)胞極度亢奮的時(shí)候,負(fù)責(zé)編程的那部分大腦細(xì)胞就得到了充分的休息。當(dāng)重新開(kāi)始工作的時(shí)候,我會(huì)發(fā)現(xiàn)那些難題現(xiàn)在竟然可以迎刃而解。
5、對(duì)答案的渴求
只要你堅(jiān)定信念,一定要找到問(wèn)題的答案,你才會(huì)付出精力去探索,即使最后沒(méi)有得到答案,在過(guò)程中你也會(huì)學(xué)到很多東西?
6、多與別人交流
三人行必有我?guī)?,也許在一次和別人不經(jīng)意的談話(huà)中,就可以迸出靈感的火花。多上上網(wǎng),看看別人對(duì)同一問(wèn)題的看法,會(huì)給你很大的啟發(fā)。
7、良好的編程風(fēng)格
注意養(yǎng)成良好的習(xí)慣。
8、韌性和毅力
這也許是“高手”和一般程序員最大的區(qū)別。高手們并不是天才,他們是在無(wú)數(shù)個(gè)日日夜夜中磨煉出來(lái)的。成功能給我們帶來(lái)無(wú)比的喜悅,但過(guò)程卻是無(wú)比的枯燥乏味。
c語(yǔ)言是一個(gè)實(shí)用性很強(qiáng)的語(yǔ)言。你如果想要學(xué)好它,就得下一翻功夫。
首先你要有一個(gè)正確的態(tài)度,沒(méi)有一個(gè)正確態(tài)度的人是學(xué)不好任何東西的。你如果真想學(xué)好C語(yǔ)言的話(huà),你就要做好好好學(xué)它的準(zhǔn)備,不要三心二意。
其次,你要了解你學(xué)這個(gè)語(yǔ)言的目的。你是想過(guò)計(jì)算機(jī)等級(jí)考試呢?還是想真正想用這一門(mén)語(yǔ)言。這就有很大的區(qū)別,這決定你學(xué)習(xí)的程度。再次,你要了解你需要的教材。什么樣的教材才是適合你。你要認(rèn)真的選,不要太隨意了。因?yàn)椴煌慕滩某潭炔煌?,也不一定適合你。然后,就是學(xué)的問(wèn)題了。你做好了上面的準(zhǔn)備,就好好開(kāi)始學(xué)了??墒菍W(xué)好一門(mén)語(yǔ)言,一個(gè)好的方法很重要的。你要從整體上來(lái)理解C
語(yǔ)言,認(rèn)識(shí)到C語(yǔ)言的優(yōu)勢(shì),還有C語(yǔ)言的特點(diǎn)。C語(yǔ)言是面向過(guò)程的一門(mén)語(yǔ)言,特別強(qiáng)調(diào)各個(gè)程序的關(guān)系。像程序之間的調(diào)用,這是很平常的。一門(mén)語(yǔ)言的基礎(chǔ)部分不過(guò)是一些關(guān)于數(shù)的類(lèi)型,字符的類(lèi)型的定義。你只要認(rèn)真看不難明白的。不過(guò)最好的方法還是上機(jī)調(diào)試。在這一階段做一些簡(jiǎn)單的程序。來(lái)明白C語(yǔ)言的編程環(huán)境,數(shù)字的類(lèi)型。這樣理解起來(lái)會(huì)更快些,也比較容易記憶。后來(lái),就是學(xué)習(xí)一些過(guò)程語(yǔ)言的基礎(chǔ)的模式。順序,循環(huán),選擇這些東西。這些東西都是一些活的東西,千萬(wàn)不要死記硬背,這是沒(méi)有用的。在這一階段,你可以編一些比較簡(jiǎn)單的程序。像數(shù)據(jù)的計(jì)算,成績(jī)的判定等等。
隨著學(xué)習(xí)的深入,你會(huì)發(fā)現(xiàn)C語(yǔ)言有許多東西很有趣的。這樣學(xué)習(xí)不再是一個(gè)多么難的事了,而是一件快樂(lè)的事。最后C語(yǔ)言和任何一門(mén)語(yǔ)言一樣需要多上機(jī)調(diào)試,多動(dòng)腦。C語(yǔ)言的基礎(chǔ)部分很快就會(huì)掌握的。
最后記著:沒(méi)有付出就沒(méi)有回報(bào)!
C語(yǔ)言確實(shí)比較難學(xué),但是你要想學(xué)好就一定要堅(jiān)持下去。我想你應(yīng)該也是看的譚老爺子的
《C程序設(shè)計(jì)》吧,吧課本好好的看看,看完每一章節(jié),翻到習(xí)題,對(duì)照著那本答案書(shū)一遍一遍的敲代碼,直到你自己能不看書(shū)把它敲下來(lái),當(dāng)你把這本書(shū)都敲完的時(shí)候你會(huì)發(fā)現(xiàn)你已經(jīng)入門(mén)了!其實(shí)學(xué)這些東西沒(méi)有什么捷徑,關(guān)鍵是 多看多練習(xí),最重要的就是多練習(xí),一遍一遍的敲代碼,書(shū)看不懂的時(shí)候就多看幾遍自然而然就會(huì)懂了。
一定要多練習(xí),光看不練什么都學(xué)不會(huì)的。
一定要記住,勤動(dòng)手,動(dòng)手?。。。。。。。。。。?!
初學(xué)者學(xué)習(xí)計(jì)算機(jī)語(yǔ)言要會(huì)“讀程序”,要對(duì)小型的應(yīng)用型、游戲型程序感興趣,并模仿去加深對(duì)C語(yǔ)言程序設(shè)計(jì)的理解和操作,只有不斷地寫(xiě)程序、調(diào)試程序才能得到編寫(xiě)程序的經(jīng)驗(yàn)和加深對(duì)程序的理解,這也是學(xué)習(xí)編寫(xiě)優(yōu)秀高級(jí)程序的秘密武器。在網(wǎng)上,多看看別人寫(xiě)的代碼,收集一些自己認(rèn)為比較好的代碼,然后再多寫(xiě)代碼
學(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)了。
1、學(xué)好C語(yǔ)言,你可以很好地應(yīng)付任何一種編程工具。
2、一定要多上機(jī)練習(xí),通過(guò)程式了解相關(guān)知識(shí)。幾經(jīng)反復(fù)方得正果。
3、不要把學(xué)習(xí)C語(yǔ)言當(dāng)成一種任務(wù),更不要把它看成很難完成的任務(wù)。要充滿(mǎn)自信,只要是一個(gè)智力正常的人都能學(xué)好C語(yǔ)言。始終保持游戲的心態(tài),多發(fā)現(xiàn)其中的樂(lè)趣。當(dāng)感到編程趣味無(wú)窮,那你在電腦方面將前程無(wú)量。
4、如果一個(gè)程式一時(shí)無(wú)法弄清楚最后暫時(shí)放在一邊,過(guò)一段時(shí)間你可能會(huì)從其他的程式中悟出道理。
5、C語(yǔ)言是一個(gè)整體,各個(gè)方面是有機(jī)聯(lián)系的,要從總體上把握它,不要把它割裂成互不關(guān)聯(lián)的部件。
6、不要完全相信教材(包括本講義),所有結(jié)論最好都上機(jī)驗(yàn)證。
建議先學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)。教材最好是清華大學(xué)出版社嚴(yán)蔚敏的數(shù)據(jù)結(jié)構(gòu)(C語(yǔ)言版)。能夠把上面的算法用C語(yǔ)言都實(shí)現(xiàn),就很牛了。
有時(shí)間可以穿插看一下清華大學(xué)出版社的算法類(lèi)的資料。
首先,基礎(chǔ)扎實(shí)真的很重要,什么語(yǔ)言其實(shí)不重要。只要上了道,語(yǔ)言基本上都是一通百通的。對(duì)學(xué)習(xí)編程,應(yīng)當(dāng)記住這樣三句話(huà)“經(jīng)得起誘惑,耐得住寂寞,受得起挫折”,我雖然記住了,但要真正去做遠(yuǎn)比記住困難。
其次,興趣是最好的老師,實(shí)踐是進(jìn)步的捷徑,需求是靈感的源泉。如果你不喜歡編程,那么有一天你肯定會(huì)厭倦。我本不是學(xué)計(jì)算機(jī)的,但是我喜歡編程,這是支持我一直努力下去的源泉,即使沒(méi)有人逼你,你也能靜下心來(lái)學(xué)習(xí)。不斷強(qiáng)化自己的動(dòng)手能力,多多實(shí)踐。動(dòng)手編碼的過(guò)程就是一個(gè)強(qiáng)化記憶的過(guò)程,是發(fā)現(xiàn)問(wèn)題的過(guò)程,更是鍛煉能力的過(guò)程。
以上看法全是我認(rèn)為對(duì)的。
要理解C語(yǔ)言的數(shù)據(jù)類(lèi)型和語(yǔ)句,不用去專(zhuān)門(mén)背它們,不記得時(shí)再翻書(shū),用多了自然會(huì)記住。還要多看些編程高手的程序,學(xué)學(xué)他們編程的邏輯思維。
仔細(xì)想想,實(shí)際上學(xué)習(xí)C語(yǔ)言,最初是應(yīng)該先學(xué)習(xí)C語(yǔ)言的基礎(chǔ)語(yǔ)法。也就是學(xué)習(xí)C語(yǔ)言的組成部分。一部分一部分的向下學(xué)。知識(shí)要一點(diǎn)一點(diǎn)的鞏固的。本人假設(shè)你學(xué)習(xí)C語(yǔ)言是看“C程序設(shè)計(jì)”.我認(rèn)為你應(yīng)該先把C程序設(shè)計(jì)仔細(xì)的看一便,這樣你應(yīng)該可以對(duì)整本書(shū)和C語(yǔ)言的整體組成結(jié)構(gòu)有個(gè)大致的清晰了解。不要認(rèn)為學(xué)習(xí)只是在看書(shū),看一便就可以了。你應(yīng)該學(xué)會(huì)記筆記,在記筆記的過(guò)程中,其實(shí)你就是在學(xué)習(xí),從知識(shí)的分析,理解,歸納,到最后以自己的思維方式記下來(lái),這整個(gè)過(guò)程就是把書(shū)中的知識(shí)抽象到你自己的腦袋里。個(gè)人感覺(jué)學(xué)習(xí)效果非常好,不懂就問(wèn),要多多與人交流,要多思考,遇到問(wèn)題自己先多想想,實(shí)在找不到問(wèn)題出在哪,在去請(qǐng)教別人,不要有不懂的地方就直接去問(wèn)別人,那樣對(duì)你沒(méi)太大的好處。其實(shí)要學(xué)會(huì)給自己安排適合自己的學(xué)習(xí)計(jì)劃,我大致來(lái)估計(jì)了一下,如果你每天能花4個(gè)小時(shí)安靜的,用心去學(xué)習(xí)的話(huà),30天之內(nèi)你應(yīng)該可以掌握C語(yǔ)言了。其實(shí)在整個(gè)學(xué)習(xí)過(guò)程中你大多數(shù)時(shí)間都在看書(shū),而不是面對(duì)電腦。在調(diào)試你的代碼之前,先在紙上把核心代碼大致寫(xiě)出來(lái),分析一下:程序的組成模塊(可以是一個(gè)函數(shù)或多個(gè)),由幾個(gè)函數(shù)來(lái)實(shí)現(xiàn),接口的封裝。采用哪種數(shù)據(jù)結(jié)構(gòu)更適合一些。關(guān)鍵在于算法。在你的最終程序發(fā)布之前,最好把你的代碼行數(shù)減到最少。不要只想著把代碼寫(xiě)多。過(guò)多的代碼對(duì)程序來(lái)說(shuō)是負(fù)擔(dān)。你可以在Internet 上下載一個(gè)文件(C語(yǔ)言經(jīng)典例題。chm),里面大致包含了上百個(gè)經(jīng)典的例題。每一個(gè)例題都是C語(yǔ)言某部分的典型應(yīng)用。花時(shí)間把這個(gè)文件中的所有例題代碼研究一下,最好能自己把代碼改善,以自己的方式來(lái)求解。以后你會(huì)發(fā)現(xiàn)你在寫(xiě)一些應(yīng)用程序的時(shí)候經(jīng)常會(huì)有一些算法。會(huì)涉及到我之前提到的例題。最后我認(rèn)為你可以自己來(lái)寫(xiě)C語(yǔ)言標(biāo)準(zhǔn)函數(shù),比如strcpy(); strlen();strcat();最好不要過(guò)分依賴(lài)庫(kù)函數(shù)。
篇五:c語(yǔ)言學(xué)習(xí)方法
計(jì)算機(jī)基礎(chǔ)和程序設(shè)計(jì)學(xué)習(xí)方法
大學(xué)之前的基礎(chǔ)
大家是不是認(rèn)為我大學(xué)之前就積累了很多計(jì)算機(jī)方面的基礎(chǔ)知識(shí)呢?事實(shí)不是這樣的,我的小學(xué)是在們村里上的,根本就接觸不到電腦,高中的電腦課時(shí)有一次沒(méi)一次的,基本上都被老師占用上別的課了,就是高二的江蘇省計(jì)算機(jī)的考試也只是背題目過(guò)的。至于瀏覽器只知道IE,QQ也是6月9號(hào)晚上去網(wǎng)吧我干的唯一一件事,本來(lái)準(zhǔn)備包夜的,無(wú)奈自己什么都不會(huì),只好回宿舍睡覺(jué)了,那好像是我第三次去網(wǎng)吧,那時(shí)不知道有迅雷可以下載東西,至于最基本的word,excel是上個(gè)暑假惡補(bǔ)了一下。PPT我相信在座不會(huì)的是極少數(shù)吧,我是這學(xué)期要做班長(zhǎng)論壇PPT才學(xué)的。所以我并沒(méi)有什么關(guān)于計(jì)算機(jī)的基礎(chǔ),可謂是大學(xué)之前一片空白。
大學(xué)開(kāi)始現(xiàn)狀
大學(xué)一切都是美好的,一切都是陌生的,一切都是殘酷的。剛開(kāi)始時(shí)我的學(xué)習(xí)方法還都是和高中一樣的,除了預(yù)習(xí)高數(shù),其他一切都是浮云了。我們的計(jì)算機(jī)老師也許和大家的不一樣,大學(xué)計(jì)算機(jī)信息基礎(chǔ)教程應(yīng)該只講了三個(gè)星期吧,我的基礎(chǔ)大家也知道了,而且我的老師又不按書(shū)上的講,我就更當(dāng)聽(tīng)天書(shū)了。
就到了第四個(gè)星期吧,開(kāi)C語(yǔ)言的課,結(jié)果我發(fā)現(xiàn)老師好像講了180頁(yè)的內(nèi)容吧,一點(diǎn)也不夸張,就連文件都講了,帶了C語(yǔ)言書(shū)的同學(xué)可以看看文件在書(shū)上的哪個(gè)地方。課后我就想大學(xué)計(jì)算機(jī)信息基礎(chǔ)教程我是一個(gè)字不懂,現(xiàn)在老師又講了180,要是到期末考試我可怎么辦啊,而且我是班上學(xué)號(hào)最后的,這樣的如果我不掛還有誰(shuí)掛呢,要是大家的期中考試在一年前的時(shí)間我來(lái)考,我肯定考不到二十分的。
請(qǐng)問(wèn)在座的各位同學(xué)有多少?zèng)]有考到二十分的?又有多少同學(xué)有我上面所說(shuō)的那么好的基礎(chǔ)的?
可是現(xiàn)在呢?我是這么樣的呢?全國(guó)計(jì)算機(jī)等級(jí)考試是在今年的3月份考的,當(dāng)時(shí)C語(yǔ)言的課還沒(méi)有授完,我就以?xún)?yōu)秀通過(guò)了。江蘇省計(jì)算機(jī)等級(jí)考試是這學(xué)期10月份考的,因?yàn)榘嗌系氖虑樵诳荚嚽耙恢睕](méi)有時(shí)間復(fù)習(xí),也就是我是裸考的,結(jié)果還以以?xún)?yōu)秀通過(guò)了。
下面就講講我的學(xué)習(xí)方法吧。
學(xué)習(xí)方法
大學(xué)計(jì)算機(jī)信息基礎(chǔ)教程
對(duì)于大學(xué)計(jì)算機(jī)信息基礎(chǔ)教程沒(méi)有其他好的學(xué)習(xí)方法,一個(gè)字的看,最后一章就不要看了,一是不這么能看懂,二是考試不這么考到。那如何去看呢,首先沒(méi)有重點(diǎn),不要讓老師給你劃重點(diǎn),重點(diǎn)就都是重點(diǎn),就考試來(lái)講什么都考,就個(gè)人而言,為了自身的發(fā)展就都要學(xué),為什么叫基礎(chǔ)教程呢,因?yàn)檫@些都是一些最基礎(chǔ)的東西。比如在座的各位有多少知道MIDI,實(shí)質(zhì)上就是樂(lè)譜的數(shù)字表示。用與計(jì)算機(jī)合成音樂(lè)的。
不同于c語(yǔ)言的是大學(xué)計(jì)算機(jī)信息基礎(chǔ)教程要慢慢看,一章一章的看,每看完一章然后就做關(guān)于這章的習(xí)題,然后再把這章在看一遍,把做錯(cuò)的相關(guān)知識(shí)點(diǎn)重點(diǎn)看,最后在把自己做的習(xí)題在看一遍每一個(gè)選項(xiàng)搞懂就ok了。最后說(shuō)白了就看你有沒(méi)有看了。不看不會(huì),認(rèn)真看就會(huì)了。
C語(yǔ)言
很多人對(duì)學(xué)習(xí)c語(yǔ)言感到無(wú)從下手,經(jīng)常問(wèn)我同一個(gè)問(wèn)題:究竟怎樣學(xué)習(xí)c語(yǔ)言? c語(yǔ)言是一個(gè)實(shí)用性很強(qiáng)的語(yǔ)言。你如果想要學(xué)好它,就得下一翻功夫??墒谴蠖鄶?shù)人都認(rèn)為它太難學(xué)了。所以就沒(méi)有認(rèn)真的學(xué),也當(dāng)然學(xué)不好了。
首先你要有一個(gè)正確的態(tài)度,沒(méi)有一個(gè)正確態(tài)度的人是學(xué)不好任何東西的。你如果真想學(xué)好C語(yǔ)言的話(huà),你就要做好好好學(xué)它的準(zhǔn)備,不要三心二意。
其次,你要了解你學(xué)這個(gè)語(yǔ)言的目的。你是想過(guò)計(jì)算機(jī)等級(jí)考試呢?還是想真正想用這一門(mén)語(yǔ)言。這就有很大的區(qū)別,這決定你學(xué)習(xí)的程度。
你可能認(rèn)為我們學(xué)院要學(xué)習(xí)它干什么呢?又有什么用呢?
那大家想不想什么東西都像電腦一樣智能化呢?
如果想那這就是我們學(xué)習(xí)C語(yǔ)言的理由,就拿電腦而言吧,是有許多的微型計(jì)算機(jī)集成的,說(shuō)白了就是單片機(jī),而單片機(jī)是深入我們生活的,比如電子表之類(lèi)的。
而單片機(jī)能接受的語(yǔ)言有2種,一是匯編語(yǔ)言,另一個(gè)就是C語(yǔ)言了,如果C語(yǔ)言要一年學(xué)的話(huà),那匯編語(yǔ)言至少要學(xué)3年。到了大三的時(shí)候我們會(huì)有微機(jī)原理的專(zhuān)業(yè)選修課,到時(shí)大家就可以選了。現(xiàn)在社會(huì)發(fā)展的趨勢(shì)不就是實(shí)現(xiàn)智能化嗎。又有誰(shuí)會(huì)嫌自己的東西太智能話(huà)人性化呢。為了讓自己的生活更美好所以大家得把它當(dāng)專(zhuān)業(yè)課看待。
然后,就是學(xué)的問(wèn)題了。你做好了上面的準(zhǔn)備,就好好開(kāi)始學(xué)了??墒菍W(xué)好一門(mén)語(yǔ)言,一個(gè)好的方法很重要的。C語(yǔ)言是面向過(guò)程的一門(mén)語(yǔ)言,特別強(qiáng)調(diào)各個(gè)程序的關(guān)系。像程序之間的調(diào)用,所謂面向過(guò)程就是你要知道他在計(jì)算機(jī)了每一步到底是怎么的一個(gè)執(zhí)行過(guò)程。所以你要多的把它透。
下面我給大家提幾點(diǎn)建議
1、要提前預(yù)習(xí),不預(yù)習(xí)一切都是白費(fèi),c語(yǔ)言上課的容量以我的眼光來(lái)看是很大的,而且大學(xué)課都是2節(jié)課一起的,如果不預(yù)習(xí),上課也許前面的你懂了,但是頭腦的容量是有限的,上到后面你就會(huì)漸漸不懂,如果長(zhǎng)此下去,你的C語(yǔ)言就可想而知了,況且老師不可能把書(shū)上的知識(shí)全部講到。所以對(duì)于c語(yǔ)言預(yù)習(xí)是必不可少的。而且在預(yù)習(xí)得時(shí)候要達(dá)到懂的程度,也就是你只把上課當(dāng)做一種提升自己的時(shí)候,從老師那里學(xué)書(shū)上沒(méi)有的知識(shí)。
2、如何正確的預(yù)習(xí)呢?要帶著思考看書(shū),不思考書(shū)是看不下去的,看著看著頭就暈了,馬上就不想看了,結(jié)果就不看了。書(shū)不是看一遍就懂的,要每次在看不下去之后再?gòu)哪氵@次開(kāi)始看的地方看,看上幾遍就懂了。如果你在暈頭轉(zhuǎn)向之后就停止的話(huà),差不多就等同于這次沒(méi)看吧,白白浪費(fèi)時(shí)間了,所以得多看多思考。如何思考呢?你要帶著計(jì)算機(jī)是這樣實(shí)現(xiàn)理解這個(gè)語(yǔ)句的,為什么要有這個(gè)語(yǔ)句?就比如變量為什么要先聲明后使用呢,因?yàn)樗皇侨?,不知道他是變量,只有你用語(yǔ)句表達(dá)出是什么,他才知道是什么,你不說(shuō)的她不知道。所以電腦是很笨的。
3、上課時(shí)相當(dāng)重要的,老師會(huì)講無(wú)形中強(qiáng)調(diào)書(shū)上的重點(diǎn),編程在哪些地方容易錯(cuò)(比如在scanf中的&),以及一些編程的技巧。當(dāng)然c語(yǔ)言無(wú)所謂重點(diǎn),都是重點(diǎn),也許你就會(huì)因?yàn)橐粋€(gè)小小的錯(cuò)誤最后vc給你報(bào)100多個(gè)錯(cuò)誤的。習(xí)題課一定不要逃,基本上現(xiàn)在我們
常見(jiàn)編程的老師都會(huì)講到。當(dāng)然了第一學(xué)期都是一些基本的,和高中的偽代碼沒(méi)有什么多大的區(qū)別,有的就是有好多注意點(diǎn),所以有了預(yù)習(xí)的基礎(chǔ)上課這些東西一點(diǎn)你就會(huì)明白的。切記不要一節(jié)課或幾節(jié)課不懂就不聽(tīng)了,課后也許你這要看上一遍就會(huì)明白了上課不懂的地方,因?yàn)槟惝吘怪览蠋熯@個(gè)地方是怎么講的,有聽(tīng)的基礎(chǔ)。
4、要多練習(xí),學(xué)了C不就是為了自己能寫(xiě)嗎?怎樣才能寫(xiě)出好的呢,只有自己多練習(xí)了,尤其是上機(jī)課,不要玩,要利用好,因?yàn)檫@是有老師指導(dǎo)的,有錯(cuò)了你會(huì)很容易問(wèn)到老師你哪里出錯(cuò)了,而課后能你只能自己去發(fā)現(xiàn)它,那樣會(huì)費(fèi)好長(zhǎng)時(shí)間的。自己多寫(xiě)還能很容易發(fā)現(xiàn)自己的薄弱點(diǎn),C語(yǔ)言的使用時(shí)很靈活的,所以就更要多練,靈活掌握。
總結(jié)一下就是一看二思三聽(tīng)四練,要反復(fù)反復(fù)再反復(fù)。
就我個(gè)人而言,我認(rèn)為最重要的還是看書(shū),書(shū)是一切之本,我們不要因?yàn)檫@本書(shū)看不懂就去找其他書(shū)刊,至少對(duì)于C語(yǔ)言我們現(xiàn)在用的書(shū)可以說(shuō)是最經(jīng)典的了。所以你要做的就是要把它變成你的,說(shuō)老實(shí)話(huà),如果你認(rèn)真看書(shū),不用老師你也會(huì)精通的。
那看書(shū)最重要的是什么?答:讀程序。沒(méi)錯(cuò),讀程序是學(xué)習(xí)c語(yǔ)言入門(mén)最快,也是最好的方法。尤其是我們用的書(shū),基本上每一個(gè)知識(shí)點(diǎn)后都有例程供大家學(xué)習(xí)。
然后就是自己編程了,最好是和例程類(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)了。
最后說(shuō)一下怎樣才能成為一個(gè)高手呢?
寫(xiě)程序的最高境界其實(shí)就是掌握各種解決問(wèn)題的手段(數(shù)據(jù)結(jié)構(gòu))和解決問(wèn)題的方法(算法)。舉個(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á)到的。
程序要考慮它運(yùn)行所需的內(nèi)存空間,和運(yùn)行時(shí)間,誰(shuí)能達(dá)到兩者兼顧誰(shuí)就是高手。
考試
學(xué)??荚嚾绾螐?fù)習(xí)。
我們學(xué)校講的知識(shí)與全國(guó)計(jì)算機(jī)等級(jí)考試與江蘇省高校計(jì)算機(jī)考試有和差別以及如何備考。
詞條內(nèi)容僅供參考,如果您需要解決具體問(wèn)題
(尤其在法律、醫(yī)學(xué)等領(lǐng)域),建議您咨詢(xún)相關(guān)領(lǐng)域?qū)I(yè)人士。