當前位置:才華齋>計算機>C語言>

C語言入門的基本學習方法

C語言 閱讀(6.5K)

篇一:C語言入門的基本學習方法

C語言入門的基本學習方法

一、C語言入門的基本學習方法

《C語言》的內容很豐富,有的部分涉及到的細節很多,如硬體知識和資料結構知識等,自學時不可能面面俱到,否則必然會顧此失彼,反而抓不住主要矛盾。筆者認為對初學C語言的考生,開始不必在每一個細節上過於死摳,而應當把主要精力放在最基本、最常用的那些部份,待有一定的基礎後再深入到一些非主要的細節,有一些細節需要通過較長期的實踐才能熟練掌握。初學C語言時,可能會遇到有些問題理解不透,請不要氣餒,鼓足勇氣向後面的內容學習,待學完後面的章節知識,前面的問題也就迎刃而解了。學習C語言始終要記住―曙光在前頭‖和―千金難買回頭看‖,―千金難買回頭看‖是學習知識的重要方法,就是說,學習後面的知識,不要忘了回頭弄清遺留下的問題和加深理解前面的知識,這是學習的人最不易做到的,然而卻又是最重要的。比如:在C語言中最典型的是關於結構化程式設計構思,不管是那種教材,一開始就強調這種方法,這時也許你不能充分體會,但是學到函式時,再回頭來仔細體會,溫故知新,理解它就沒有那麼難了。學習C語言就是要經過幾個反覆,才能前後貫穿,積累應該掌握的C知識。

下面我們就圍繞《C語言》的特點、以98年全國等級考試

大綱為基礎,把裡面的重點和難點,從巨集觀和微觀兩個角度,就如何學好這門課程提供一些建議和方法,供大家學習時參考。

首先從巨集觀上談一談自學C語言的方法。

我認為要學好C語言首先必須瞭解等級考試C語言的大綱和內容,以及各種輔助材料的用途,這是學好C的基礎。從以前的經驗以及考網上的一些資訊可知,要自學C語言必須準備以下資料:

1、 教材:大家現在都公認是清華大學譚浩強主編的那本,當然有其他的也可以,如高校出版社的。

2、 習題集:我認為清華大學的《C語言樣題彙編》不錯。書後面附有答案。

3、 上機練習:我認為南開大學的那個可以,最好是在考前從頭到尾做一遍。答案可以去考網下載區下載。

4、 大綱:這個肯定要的,可以在考網二級版那裡去下,然後打印出來。

5、 自學計劃:為了做到有計劃有目的地學習C語言,大家可以根據自己的學習(或工作)情況,制定一個自學計劃,循序漸進地學習。

6、 模擬盤:為了更好地熟悉考場環境,下一個模擬盤是必不可少的,可以在。下載,注意,在下載時要把鎖匙盤一起下回來,否則不能進入考試環境。

7、 教學光碟:如果能買到C語言的教學光碟,那當然更好,這樣可以更直觀地學習C語言了。

下面從微觀上針對C語言的幾個重點和難點,逐個談談具體的自學方法。

 二 如何學習C語言的運算子和運算順序

C語言的運算功能十分豐富,運算種類遠多於其它程式設計語言。因此,當多種不同運算組成一個運算表示式,即一個運算式中出現多種運算子時,運算的優先順序和結合規則顯得十分重要。

初學者往往對此感到非常困難,覺得C語言學習太繁雜,其實只要我們對此合理進行分類,找出它們與我們在數學中所學到運算之間的不同點之後,記住這些運算也就不困難了,有些運算子在理解後更會牢記心中,將來用起來得心應手,而有些可暫時放棄不記,等用到時再記不遲。

下面是所有的運算子按優先順序不同分類列表:(對不起,因為表格顯示不正常,已被我刪除大家可以看書上的)

表中列出15種優先順序的運算子,從高到低,優先順序為1 ~ 15,最後邊一欄是結合規則,除第2、3級和第14級為從右至左結合外,其它都是從左至右結合,它決定同級運算子的運算順序。

下面我們通過幾個例子來說明:

(1) 3*20/4%10 這個表示式中出現3種運算子,是同級運算子,運算順序按從左至右結合,因此先計算3 * 20=60,然後被4除,結果為15,最後是%(求餘數)運算,所以表示式的最終結果為15%10 = 5

(2)a = 3;b = 5;c =++ a* b ;d =a + +* b;

例子中的―;‖是C語言的語句分隔符,執行順序為從左到右,

第1條語句執行後a的值為3,第2條語句執行後b的值為5,第3條語句中有兩個運算子前置+ +和*,按表中所列順序,+ +先執行,*後執行,所以+ + a執行後,a的值為4,由於+ +為前置運算,所以a的值4參與運算,C的值為20,最後執行第4條語句,由於a + +為後置運算,所以a值為4參與運算,使得d的值仍為20,而a參與運算後其值加1,值為5。

這個例子執行後,a的值為5,b的值為5,c的值為20,d的值也是20。

(3)a = 3,b = 5,b+ = a,c = b* 5

例子中的―,‖是逗號結合運算,上式稱為逗號表示式,自左向右結合,最後一個表示式的結果值就是逗號表示式的結果,所以上面的逗號表示式結果為40,a的值為3,b的值為8,c的值為40。

三、如何學習C語言的四種程式結構

 篇二:淺談C語言學習方法

  淺談C語言學習方法

本人是一名windows程式寫作員,使用的語言是C語言.其他語言瞭解一點點,但並不擅長.可能對於初學者來說,首先就是選擇一門程式設計語言.當然,今天我將要說的不是這方面.每種語言都有它所擅長的領域與層面.當然對於其他非C語言我是一名門外汗,我也不會站在C語言的立場去談論其他任何一門語言.好了,在開始進入正題之前,我想談談個人對C的一些看法:

C語言是一種早期的計算機語言,最初誕生目的是為了提供一種基於UNIX系統的工作語言.但是,後來卻被越來越多的人發現它的優點與潛力.C本身比較接近底層,適合開發系統軟體甚至是作業系統.我個人也認為它是界於高階語言與組合語言之間的中級語言.C語言是一門結構化語言(我認為主要是指它的控制結構如:if if-else while for等等).C程式設計上有提到"自頂向下,逐步深入".以函式為原子功能模組.對於大型的程式來說模組化是很重要的,有一句話說的很好"優質的程式首先就是便與人們之間的相互討論與交流,其次才是執行效率".當然我個人認為任何一名程式寫作者,都應該養成一種特定的思維方式,以程式的思維方式來思考程式的實現.前提就是要足夠的來了解計算機底層技術.要不我想就連學習都是很困難的,凡事都是一個思路的問題嘛.標準的來衡量,C應該算是高階語言陣營的一份子.可很多有C語言開發經驗的程式寫作者.通常親切的稱C為界於底級語言與高階語言之間的中級計算機語言.當然不是因為C比高階語言要差,之所以這麼認為是因為C既具有高階語言的結構化與可理解性又具有低階語言的高效率.同時C的移植性也是非常不錯的,大家應該知道,越是接近硬體,接近底層的語言就越加的依賴硬體環境,也就是我們所說的裝置相關性.C這一點做的是非常棒的.說了這些,在從另一個角度去分析C語言.當然每種語言都有它自身的優缺點,C也一樣.比如在現在高階語言與頂層技術的角度來看的話,C最大的缺陷就是Data與演算法的分離.舉一個例子: 對於一個擁有幾千行甚至上萬行Code的程式來說,如果修改Data,比如我在Structure中增加一個欄位,可能為此我的整個程式都要改動,這使得程式的可重用性大大降低.開發週期也大大的延長.但是在底層的角度來看這也正是C的優點.我為什麼要這麼說呢?我個人認為在求解與實現一個小問題的時候,我們可以寫出一個通用的模組處理不同的Data.當然比如某些經常用到的,基於資料結構的一些常用演算法我們可以寫出來在開發的時候我們可以直接把預先編寫的模組插入到我們的程式中去,這不也是大大低了開發週期嗎?初學者完全可以根據自己的需求來編寫一個自定義庫.好了,說了這些,有些地方我理解錯了,還請各位指出來,交流是很重要的,前提是要把自己的心態放平.下面我將談論本問的重點,也就是如何來學習C語言,是給那些初學者讀的.

正題部分:

有人可能會說:學習還用你教啊,誰沒上過學啊.其實我今天要說的只是,站在一個過來人的角度,來分析與解釋學習C語言的過程中比較困難的地方.當然我個人也會對比較具體的問題進行解釋(個人看法).我一直在強調個人看法,我是想讓大家明白,對於同一個問題大家可能都很難達成統一的意見,希望批評的時候客氣點就好嘍!

初學者該看哪些書來入門:

在學習C語言之前,首先就要選擇一本教材,對於初學者,我個人並不建議去讀電子書籍,最好是買紙質書來學習.比如比較有名的"C程式設計"就很不錯,尤其是第二版.我也看過,比較適合中國人來初學.整本書都在全面系統的講解C的語法結構,構成C的語言元素包括:資料型別,支援的運算子,識別符號(是由程式設計師按照命名規則起的名字,用於變數名,函式名,巨集名等等),關鍵字(編譯系統用於實現C內部功能的詞,比如:轉向goto和中斷break等等)等.看完這本書你基本上可以寫一些簡單的小程式,當然是DOS下的程式.如果你想在進一步深入學習C的話,可以看"C陷阱與缺陷"這本書.寫這本書的作者是在Bell工作對C是非常精通的,應該算是大師級的人物了.如果你暫時不想深入C的話,也沒問題,因為此時你完全可以把C當作一種程式設計工具來使用,你要做的就是多寫Code來讓自己熟悉C語言.經驗是非常重要的,"經驗是檢驗真理的唯一方法".當然你不會紙上談兵,如果你有過多

的開發經驗的話,就知道在紙上或最初的設想的Code拿到計算機上來實現,最終會發現有很多地方都是不合理的,之前是沒有辦法想象到的.在初學C的過程中,比如你會看"C程式設計"來初學C,當你學完每一章的時候要把習題來完成,這裡就是考驗你學到的知識了,看看你應用能力怎麼樣?尤其是程式設計題目,比較有意思.哪裡不懂了.可以翻回去看書中的解釋.如果沒有解釋或你還是不明白,可以去問別人,與其他人交流. bbs,QQ或Google.直到你弄明白為止.當你把問題最終解決的時候,我敢打賭,此時你一定很興奮,或者是比較興奮.這個時候知識已經在你的大腦裡了.

下面我為你推薦幾本不錯的關於C語言籍:

C程式設計規範

C語言大全第四版 (個人感覺不錯,裡面有提及C標準方面的東西)

C和指標

The C programming Language (經典著作)

如果你要看電子書的話,以上幾本書在Google上很容易就可以找到.

關於C語言的初步理解:

對於初學者,會有太多的疑問,原因是你的知識面太小.現在我為你解釋一些C相關的東西.目的是讓你能夠有一個大致清晰的方向,來給自己安排學習計劃.專業的來說,我們是或將是一名程式設計師,程式設計師當然就是要開發程式了.對於軟體開發方面我來解釋下術語:

C,C++,ASM,Basic,Java 這些是計算機語言.計算機語言很多,我就不多說了.

Visual C++,Visual Basic, Microsoft研發的開發環境,開發環境包括:編譯器,庫函式(每種C語言編譯器都支援標準庫,同時它們也會擴充套件自己的庫,所以很多比較以來庫函式實現的程式設計師,在轉向不同的開發環境的時候最初總是不使用的,會遇到很多問題),一些資源模板等等al 就是可視的意思,後面的就是語言al C++支援C與C++2種語言,是根據檔案的副檔名來判斷採用哪種編譯核心.

什麼是"面向物件"與"面向過程"? 其實是2種完全不同的程式設計思想,C語言是面向過程語言,而C++是面嚮物件語言.在面向物件的語言中有"類(Class)"這個東西.C中沒有.物件是由類來派生的一個例項,相反類就象是一個模板.

什麼是SDK? SDK就是軟體開發工具包(Software Development Kit).指的範圍比較廣,通俗的說,凡是能夠與軟體開發過程占上邊的東西都屬於.比如:庫檔案,參考資料,介面函式,當然語言也應該屬於.

DDK就是裝置驅動程式開發工具包.

Turbo C: 這是一個比較精緻的C語言編譯器.

理論上來說任何一門語言都可以在任何一種作業系統上執行,前提是作業系統要支援.也就是我們所說的應用程式介面,比如

Window API(Application Programming Interface),其實是Microsoft內部定義的介面函式用於實現一些Windows內部的功能.一些物件的描述術語,在不同平臺上是不同的,比如:Windows下的"呼叫",經常被稱為"呼叫","返回"被稱為"傳回".

什麼是"演算法"? 你最初只需要知道演算法實際上就是對特定的Data進行運算的一段程式碼而已.也可以認為在求解一道題目的時候,採取的方法與步驟的總稱.對於基本的C程式來說,實際上就是由Data與演算法來組成的.

什麼是"資料結構"? 如果要是系統的講解,還需要一本書"資料結構",簡單的說:是程式要處理的資料在記憶體中的儲存與組織的方式,分為:物理結構與邏輯結構.邏輯結構就是我們抽象化以後得到的大腦影象.

什麼是"函式庫"? 它們以檔案的'形式儲存,是預先定義好的函式的集合,我們的程式可以直接呼叫.當然前提是要包含它的標頭檔案(庫函式的原型宣告).這些函式是在靜態連線期間組成到檔案中去的ows又存在另一種庫,叫做動態連線庫(DLL).

GUI: 也就是"圖形使用者介面",就是我們在Windows上看到的,存在:選單欄,滾動條與顯示區域的視窗.

GDI: 圖形裝置介面,從程式寫作者的角度來看,其實GDI就是由上百個函式與資料形態和一些相關的資料結構所組成的.

學習C語言的全過程:

仔細想想,實際上學習C語言,最初是應該先學習C語言的基礎語法.也就是學習C語言的組成部分.一部分一部分的向下學.知識要一點一點的鞏固的.本人假設你學習C語言是看"C程式設計".我認為你應該先把C程式設計仔細的看一便,這樣你應該可以對整本書和C語言的整體組成結構有個大致的清晰瞭解.不要認為學習只是在看書,看一便就可以了.你應該學會記筆記,在記筆記的過程中,其實你就是在學習,從知識的分析,理解,歸納,到最後以自己的思維方式記下來,這整個過程就是把書中的知識抽象到你自己的腦袋裡.個人感覺學習效果非常好,不懂就問,要多多與人交流,要多思考,遇到問題自己先多想想,實在找不到問題出在哪,在去請教別人,不要有不懂的地方就直接去問別人,那樣對你沒太大的好處.其實要學會給自己安排適合自己的學習計劃,我大致來估計了一下,如果你每天能花4個小時安靜的,用心去學習的話,30天之內你應該可以掌握C語言了.其實在整個學習過程中你大多數時間都在看書,而不是面對電腦.在除錯你的程式碼之前,先在紙上把核心程式碼大致寫出來,分析一下:程式的組成模組(可以是一個函式或多個),由幾個函式來實現,介面的封裝.採用哪種資料結構更適合一些.關鍵在於演算法.在你的最終程式釋出之前,最好把你的程式碼行數減到最少.不要只想著把程式碼寫多.過多的程式碼對程式來說是負擔.你可以在Internet上下載一個檔案(C語言經典例題),裡面大致包含了上百個經典的例題.每一個例題都是C語言某部分的典型應用.花時間把這個檔案中的所有例題程式碼研究一下,最好能自己把程式碼改善,以自己的方式來求解.以後你會發現你在寫一些應用程式的時候經常會有一些演算法.會涉及到我之前提到的例題.最後我認為你可以自己來寫C語言標準函式,比如strcpy(); strlen();strcat();最好不要過分依賴庫函式.

C語言學習的難點:

現在應該是已經講到一個重點的環節.很多網友都說學習C語言很難,我認為C中有些部分是比較複雜,難理解的.當然在你具有了豐富的開發經驗以後,這以不在是問題了.下面我個人會對我認為學習C的時候比較難學的地方進行我自己的闡述,如果哪裡不正確,還請各位指出:

指標的出現:

我想有很多初學者學習到指標那一章都感覺很難,下面我就以自己的想法來解釋下指標這個特殊的資料型別,

基本變數大家可能並不難理解,因為基本變數其內部儲存了同類型的常量,事實上指標也是變數,不過呢,這個變數和基本變數有點不一樣,那你又問了:是哪裡不一樣呢? 我告訴你,簡單的來理解其實普通的變數內部儲存了同類型的常量,而指標變數內部儲存的則是"同類型變數的首地址".這樣你能夠理解嗎,是很簡單的解釋,但不失本質.事實就是這樣的.如果你不理解"同類型變數的首地址"的話,我可以給你形象的來描述一下:

float Variable; //宣告一個單精度實型的變數

此時,編譯器已經給Variable分配了記憶體空間,結構如下:

__________

| |1001

|---------

| |1002

|---------

| |1003

|---------

| |1004

|---------

以上便是Variable的記憶體結構了,16位下的float佔用4個位元組,記憶體地址是線性編碼的,我們可以很容易的看出Variable的首地址就是他第一個單元的地址1001,好的,繼續向下看:

float *Pointer=&Variable; //宣告一個指向Variable的指標Pointer

_________

|1001 | 這是Pointer的記憶體結構

|_______|

我們的程式可以這樣來執行:

Variable=1.0;

直接給Variable賦值,我們稱為直接訪問.

也可以這樣執行:

*Pointer=1.0;

也可以通過指標變數來賦值,前面的*是間接運算子號,意思是求Pointer內部儲存地址所標識的記憶體單元.也就是Variable.此時,是賦值是通過間接訪問來實現的.可以這樣形象的描述:

________ (指向Variable) __________

|Pointer|------------------------------------>|Variable|

--------- ----------

以上應該是指標實現的基本解釋,很多優秀的程式寫作者都說指標是C語言中的精華,的確如此,很多優秀的程式寫作者寫程式都非常依賴指標,因為它很方便,實際上指標所訪問的物件是沒有限制的,他可以指向任何型別的變數,前提是隻要我們知道記憶體地址.因此指標也並不安全,在開發網路程式的時候,儘量要少使用指標.下面我們在來看一下指標在陣列中的使用.

陣列中的指標:

簡單的來解釋下陣列,陣列結構在C中使用比較普遍,其實最常用的就是char 型別的陣列,主要是用於字串操作.實際上陣列是"同類型變數的有限集合".我想這應該不難理解吧.陣列在記憶體中佔用連續的記憶體單元(地址連續),來儲存陣列中的每一個元素.陣列是預先分配好指定長度的記憶體單元,供陣列元素使用.它並不支援動態記憶體分配.在記憶體中想要唯一的確定陣列,需要2個標識:入口地址(函式名)和結束標記('