關(guān)于C語言學(xué)習(xí)攻略是什么_第1頁
關(guān)于C語言學(xué)習(xí)攻略是什么_第2頁
關(guān)于C語言學(xué)習(xí)攻略是什么_第3頁
關(guān)于C語言學(xué)習(xí)攻略是什么_第4頁
關(guān)于C語言學(xué)習(xí)攻略是什么_第5頁
已閱讀5頁,還剩2頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

第關(guān)于C語言學(xué)習(xí)攻略是什么

C語言學(xué)習(xí)攻略是什么

一、C語言學(xué)習(xí)中存在的問題

(一)基礎(chǔ)薄弱,無法適應(yīng)

C語言學(xué)習(xí)的課程通常安排在大一,這個時候,學(xué)生們剛剛進入高校這個新環(huán)境,經(jīng)過高考后的長達(dá)3個月的“放羊”,學(xué)生們在學(xué)習(xí)方面的興趣有所回落,而且新的學(xué)習(xí)習(xí)慣還未養(yǎng)成,因此,對于一門完全陌生的學(xué)科,肯定是無法好好適應(yīng)的。雖然C語言是計算機編程類的最基礎(chǔ)的入門課程,但是,對于學(xué)生而言,它屬于一個全新的領(lǐng)域,學(xué)生們不知道該如何去學(xué)習(xí),特別是在進行上機實驗的時候,就顯得更加不知所措。用C語言編程的時候,要求百分百的正確率,否則,就“差之毫厘,失之千里”,編寫的程序無法正常運行,學(xué)生們?nèi)菀桩a(chǎn)生挫敗感,從而降低學(xué)習(xí)C語言的熱情。

(二)課時少,學(xué)習(xí)壓力大

由于C語言對于很多非計算機專業(yè)的學(xué)生來說,只是一門公共基礎(chǔ)課,因此,安排的課時相對較少,這樣導(dǎo)致教師在每節(jié)課的講授內(nèi)容就非常大,學(xué)生的學(xué)習(xí)壓力非常大。特別是在剛開始學(xué)習(xí)C語言的時候,都是些理論知識和語法知識,面對枯燥的理論和大量需要記憶的繁瑣的語法知識,學(xué)生很難在短期內(nèi)消化吸收,需要一個過程,而現(xiàn)有的課時安排不夠的情況下,使得學(xué)生每節(jié)課的學(xué)習(xí)壓力增大,一旦前面的內(nèi)容沒有完全掌握,對于后面的學(xué)習(xí)就無法跟上,從而使得學(xué)生會對其產(chǎn)生厭煩心理。

(三)學(xué)習(xí)方法不當(dāng),學(xué)習(xí)效率低下

面對這樣一個新的學(xué)科,要想學(xué)好,學(xué)習(xí)方法是十分重要的。而對于經(jīng)歷了長期的應(yīng)試教育磨練的大學(xué)新生們來說,學(xué)習(xí)的知識都只是為了應(yīng)付考試,而不知道真正的如何去學(xué)以致用。而學(xué)習(xí)C語言的`最終目的,就是為了編程,反過來說,能夠證明學(xué)好了C語言的唯一方式就是能夠編寫出優(yōu)秀的程序。初學(xué)者們在學(xué)習(xí)之初,帶著過去傳統(tǒng)的學(xué)習(xí)方法來進行C語言的學(xué)習(xí),注重語法的記憶,可是,到了上機實踐的時候,連最簡單的模仿都不能做好,就更不用說自己自主設(shè)計編寫程序了。

二、改進C語言學(xué)習(xí)的措施

(一)選擇好的學(xué)習(xí)工具

“工欲善其事,必先利其器?!背鯇W(xué)者在學(xué)習(xí)之初,一定要選擇最好的學(xué)習(xí)工具。學(xué)校配備的教材不一定是業(yè)界公認(rèn)最優(yōu)秀的,因此,學(xué)生們可以去請老師推薦,或是通過網(wǎng)絡(luò)查找,配備一兩本被業(yè)界認(rèn)可的最好的入門書籍。另外,在實踐方面,選擇的編程工具也要是最合適的,現(xiàn)在被普遍廣泛使用的是VisualC++6.0。

(二)使用好的學(xué)習(xí)方法

學(xué)習(xí)的過程都是一個循序漸進的,因此,我們要針對不同的學(xué)習(xí)階段使用不同的學(xué)習(xí)方法。

具體而言,在初期階段,即剛開始接觸C語言的階段,我們一定要了解它,正所謂“知己知彼,百戰(zhàn)不殆”。首先,我們需要對C語言的來龍去脈有非常細(xì)致的了解,我們得知道它是怎么產(chǎn)生,經(jīng)歷了怎樣的發(fā)展階段,它的主要貢獻(xiàn)是什么,它對科學(xué)的發(fā)展有什么幫助,我們學(xué)習(xí)它會有哪些好處,學(xué)習(xí)它的難點在哪,怎樣學(xué)習(xí)才更加高效。在有了這些全方位的了解之后,我們就要讓自己喜歡上C語言,要讓自己從內(nèi)心深處渴望學(xué)習(xí)C語言,那么如何才能做到呢這就需要培養(yǎng)對C語言的興趣。“興趣是最好的老師”,一旦讓自己對C語言產(chǎn)生了濃厚的興趣,在正式學(xué)習(xí)階段,我們就有了更強的動力。從心理學(xué)角度來看,人們通常對一些很有意思或很有作用的東西產(chǎn)生興趣,因此,我們就需要去發(fā)掘C語言的有意思的地方和有作用的地方。C語言本身雖然看似枯燥,但它有著神奇的魔力,我們使用C語言的時候,雖然是一系列復(fù)雜的代碼,但確能給我們變出我們想要的程序,通過這些程序,能夠給我們帶來巨大的便利。其實,教師在教學(xué)過程中,也會在這一方面下很大功夫,例如,教師會在教學(xué)過程中,現(xiàn)場演示一些比較簡單而且很有趣味的小程序,使學(xué)生產(chǎn)生羨慕之情,使學(xué)生萌發(fā)出自己也要試一試的想法,從而“引誘”學(xué)生主動積極學(xué)習(xí)。對于學(xué)生來講,在課堂上,一定要和老師形成良好的互動,要明確老師的教學(xué)方法和教學(xué)策略,并很好的與之配合。

在中期階段,即正式學(xué)習(xí)階段,這一階段,最好的學(xué)習(xí)方法就是模仿――依葫蘆畫瓢,這也是教師在課堂教學(xué)中最常用到的。教師通過挑選一些最經(jīng)典的例題,然后對其全方位解讀,包括問題的產(chǎn)生、問題的分析、方案的設(shè)計、方案的實施以及最后問題的解決。通過這種全方位的示范之后,教師再給出相似的例題,讓學(xué)生自己進行解決。這種教學(xué)方法也是非常好的一種自學(xué)方法,學(xué)生自己可以進行反復(fù)的模擬練習(xí),從而掌握對某一類型的問題的解決方法。學(xué)生通過這種自己模仿的方法,不斷提高自己的能力,而且讓自己在解決問題的過程中,增強了自信,從而提升自己的學(xué)習(xí)興趣。當(dāng)然,單純的模仿肯定是不夠的,特別是在上機實驗的時候,容易出現(xiàn)一些無法通過模范解決的問題,這個時候就需要耐心細(xì)致的進行比對,要善于發(fā)現(xiàn)問題所在,不能因為遇到困難就退縮,要積極進取,主動尋找解決問題的方法。

后期階段,即學(xué)習(xí)展示階段,通過對C語言的學(xué)習(xí)之后,老師也要檢驗自己的教學(xué)成果,學(xué)生要檢驗自己的學(xué)習(xí)成果。對于這種實踐操作型的學(xué)科,是非常容易檢驗成果的。當(dāng)然,檢驗的目的不僅僅是看學(xué)的效果,更加重要的在于發(fā)現(xiàn)學(xué)生的不足之處,從而進行改進。檢驗的方式也有很多,但是“任務(wù)驅(qū)動法”是最值得提倡的,通過用任務(wù)幫助學(xué)生們運用所學(xué)的知識去解決實際問題,實現(xiàn)從理論到實際應(yīng)用的跨越。

(三)培養(yǎng)學(xué)生自學(xué)能力,打造良好學(xué)習(xí)環(huán)境

大學(xué)所需要培養(yǎng)的最重要的能力之一就是自學(xué)能力,在如今的信息爆炸時代,知識的更新速度是非常驚人的,因此,我們需要掌握自學(xué)的能力,從而幫助自己隨時進行知識的更新。前文提到過,現(xiàn)在的大學(xué)課堂里,C語言的學(xué)習(xí)課時有限,因此,學(xué)生們需要在課外花功夫,而且C語言屬于一個實踐工具,要想靈活運用其編寫實用程序,必須經(jīng)過大量的課外編程實踐。為了培養(yǎng)良好的自學(xué)習(xí)慣,可以建立學(xué)習(xí)興趣小組,小組成員之間互相幫助,互相監(jiān)督。在小組中,可以自己開展一些編程項目,大家一起分析問題,解決問題,這樣更加能夠培養(yǎng)學(xué)生的學(xué)習(xí)興趣。

三、小結(jié)

C語言是計算機學(xué)習(xí)的一門重要的基礎(chǔ)課程,也是各專業(yè)解決問題的重要工具,因此,學(xué)生們都需要很好地將其掌握,希望學(xué)生在今后的學(xué)習(xí)中,選擇好的學(xué)習(xí)工具,改善學(xué)習(xí)方法,加大自主學(xué)習(xí)力度,真正培養(yǎng)對C語言的學(xué)習(xí)興趣。

C語言基礎(chǔ)知識

1.C語言中,變量必須先聲明后使用,即一個程序塊(花括號對)中所有臨時變量必須在第一條可執(zhí)行語句之前全部聲明,而不能像C++那樣隨用隨聲明;

2.C語言中參數(shù)傳值傳遞形參,即為參數(shù)的拷貝,此與C++/JAVA相同,同時值得注意,ANSIC不支持引用,此與C++/JAVA有區(qū)別,那么要對參數(shù)進行修改只能使用指針方式(指針傳值指針本身仍是形參,要修改指針本身那必須使用雙重指針);

3.C語言默認(rèn)類型為int,即參數(shù)無類型或函數(shù)無返回值類型聲明,則認(rèn)為是int(貌似一些編譯器不支持),同時不建議使用該特性;

4.無參數(shù)的函數(shù)聲明應(yīng)當(dāng)使用void表明,否則C語言按照老式聲明方法忽略參數(shù)類型檢查;

5.全局變量建議全大寫,局部變量建議全小寫,內(nèi)部變量31個字符有效,外部變量不區(qū)分大小寫,僅6個字符有效,所以必須保持唯一性;

6.ANSIC是按照多字節(jié)實現(xiàn)的,UNICODE是后來發(fā)展的,所以有char/WCHAR,與.NET中char直接是雙字節(jié)有區(qū)別,在C#中導(dǎo)入dll時值得注意;

7.C語言支持枚舉,并且枚舉和int直接強制類型轉(zhuǎn)換即可,比.NET方便;

8.#define聲明宏定義直接在編譯時替換,不進行類型檢查,const聲明常量則可以進行類型檢查;

9.運算符的優(yōu)先級記憶比較麻煩,還是()可靠;

10.goto并不是一無是處,在不考慮程序可讀性的情況下可能獲得更高的效率;

11.函數(shù)實際也可以與特殊的類型相對應(yīng),那樣對于理解函數(shù)指針比較方便,函數(shù)為外部類型;

12.static用于全局變量和函數(shù)則限定該變量和函數(shù)的使用范圍僅為該源文件(從而無需考慮與其他源文件不得重名),用于函數(shù)內(nèi)部變量則該變量的內(nèi)存分配和回收不再同于普通臨時變量(調(diào)用函數(shù)生成,函數(shù)返回銷毀),而是一直存在于靜態(tài)變量區(qū),從而可以保存一些狀態(tài);

13.頭文件的作用體現(xiàn)在調(diào)用其他源文件時不需要再次寫函數(shù)定義,所以實現(xiàn)函數(shù)是不需要頭文件的,調(diào)用時才需要,可以采用富頭文件定義一大組接口,然后使用多個源文件分別實現(xiàn);

14.寄存器變量使用register聲明,僅適用于使用頻率高的局部變量(含形參)(受限于底層硬件,不一定會被分配到寄存器,但是這么寫不影響效率);

15.全局變量和靜態(tài)變量默認(rèn)初始化為全零且僅初始化一次,局部變量默認(rèn)初始化為未定義且每次都會重新初始化;

16.遞歸調(diào)用的方法一般比較緊湊,但是每次調(diào)用會單獨維護調(diào)用的堆棧,所以效率不是最高;

17.#include的作用體現(xiàn)于將一些內(nèi)容避免重新寫一遍(主要是類型、函數(shù)和外部變量定義),所以實際上不一定為h文件;

18.表示一行尚未結(jié)束,對于定義長的字符串和define比較有用;

19.函數(shù)調(diào)用的執(zhí)行順序不確定,所以對于a()+b()這樣函數(shù)中使用相同變量并且改變其值的需要借助臨時變量處理,防止不同實現(xiàn)的調(diào)用順序不一致;

20.##用于宏定義中連接前后兩個部分,如cat(a,b)a##b;

21.指針是C/C++的重要內(nèi)容,當(dāng)然也是雙面刃,用好了很方便而且高效,用不好那就造成程序不穩(wěn)定;

22.使用va_list,va_start,va_arg,va_end來定義可變參數(shù)的函數(shù),通過va_start函數(shù)中的第一個不變參數(shù)將va_list指向參數(shù)列表(函數(shù)調(diào)用的棧中),然后通過va_arg獲取每個參數(shù)并將va_list移動指定類型的長度,最后則通過va_end完成必要的回收工作,需要指出的是va_arg沒有結(jié)束邊界,所以比較有效的方式有兩種,一種對于參數(shù)類型一致,則可以第一個參數(shù)指出后續(xù)參數(shù)的總數(shù),然后依次獲取,另一種對于不同類型的參數(shù)混用,則可以通過類型標(biāo)識+參數(shù)配對的方式進行使用(第一個參數(shù)依然可以指定數(shù)量,當(dāng)然也可以檢查標(biāo)識),從而避免最后讀取無效的參數(shù),對于可變參數(shù)僅支持int和double兩種類型(參數(shù)未限定類型,故按照舊式聲明理解)以及指針類型;

23.函數(shù)指針是用來在C語言中實現(xiàn)動態(tài)調(diào)用的比較有效的方式

24.結(jié)構(gòu)體用作參數(shù)依然是拷貝為形參傳遞,這點與JAVA中全部對象都是類有區(qū)別(類的對象通過引用傳值,C#支持struct),所以對于大的結(jié)構(gòu)體事宜使用指針傳遞,而對于小的結(jié)構(gòu)體拷貝傳值效率并不低;

25.代碼中字符數(shù)組為靜態(tài)常量,對其操作無效,程序塊中數(shù)組的聲明是可以自動回收的,通過malloc/calloc分配的內(nèi)存為堆內(nèi)存,需要自行通過free回收;

C語言的優(yōu)點和缺點

C語言的優(yōu)點

1.簡潔緊湊、靈活方便

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

2.運算符豐富

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

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

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

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

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

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

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

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

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

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論