初學C語言入門必讀~

2021-02-19 單片機與嵌入式

書已選定,環境配置完成,正所謂萬事俱備,只欠你自己的努力了。請從書的前言開始,仔細地閱讀手頭的教材,很多人看書喜歡直接從第一章開始看,這是錯誤的做法。前言是作者對整本書的大體介紹,作者一般會告訴你需要什麼基礎才能夠順利閱讀本書,這可以幫助你檢驗自己的基礎知識是否已經具備。看完前言,還要瀏覽一下目錄,了解一下書的整體結構,順便給自己安排一下學習計劃。

學習C語言,必需注意每一個細節,書上的例子代碼一定要自己親自敲一遍,編譯執行輸出都跟書上說的一致才能算是學完了一個例子,如果不一致,就要仔細找原因。出了書本上有的例子,自己還要「創造」一些例子,比如學習運算符優先級的時候,可以寫幾個相同的表達式,在不同的位置加上括號,看看有哪些不同的行為,比如*p++和(*p)++,又比如a = b == c、(a = b) == c和a = (b == c)等等。自己抄的書上的例子以及改造之後的例子,還有自己「創造」的例子,都應該仔細地歸類保存,並且要在原始碼中寫上簡短的注釋,闡述這個例子的意圖。

例子之後就是習題了,我建議初學者把所有的習題都獨立做一遍,然後對照答案的代碼,看看自己的代碼有那些不足,再試著修改自己的代碼。很多人不重視習題,這是極大的錯誤,因為作者通常會在習題中說明一些重要的道理,而不是單純地檢驗前面的知識。

也許你認為這樣學習太慢,其實不然。學得細緻就不用走回頭路,等你學到後面才發現自己前面沒搞清楚,那才是真的得不償失。一般說來,整本書讀完,你應該完成數千行乃至上萬行的代碼,無論是原封不動照抄書上的,還是自己心血來潮寫就的,都是今後繼續學習的一筆財富。以我自己舉例,閱讀《Windows核心編程》時(我只閱讀了3/4的內容),除了抄書上的代碼,還自己寫了很多例子,一共有5574行(用unix下的wc工具統計),時隔多日,我早已記不清Windows的系統編程了,但只要花幾分鐘翻出以前的代碼看看,便會重新瞭然於胸。所謂好記性不如爛筆頭,就是這個道理。

仔細讀書、認真抄寫原始碼、獨立完成習題外加更進一步的實驗,最後將所有的代碼留下,成為自己的經驗和財富,絕對的辛苦,也絕對的事半功倍。當然,這種方式只適合學習需要精通的技術,如果不是學習C語言,你還要具體情況具體分析。

寫到最後,還有非常非常重要的一點沒有提及──代碼風格,從最開始學習就必須強迫自己模仿最優秀的代碼風格。因為代碼風格太重要內容也太多,我會用專門的一篇文章來詳細討論,請大家關注《程式設計師之路──關於代碼風格》。

題目是關於C語言,其實我主要想說說程序該怎麼學,或者一點感悟罷了,在這裡,我只想引用身邊的幾個人的例子,來談一下對程序學習的理解

第一個人要說到我了,我對程序產生興趣,是聽說程序可以作遊戲,那時候是在初一,然而借來一本G-BASIC簡明教材後,我便傻了眼。

陌生的詞彙,古怪的邏輯,都是些天文的中文譯本,頭疼了好一陣子。

然而當時又沒有別的閒書可看,我就整天捧著那一本書,什麼方法都試過了,甚至倒著看過了,都沒看出什麼眉目,自己又沒有電腦,只能不停地大膽地想像,然後滿腦子的疑惑……

在這裡停一下,上面說的便是我學習的風格:總要經歷一番波折,瞎折騰幾下,然後才會有偶然間的明悟-開竅了!我甚至沒見過幾個人有我這麼笨,現在明白過來了,我總是一開始把事情想得過於複雜,造成狗咬刺蝟的難堪的局面,然而竟然有意想不到的收穫!但是不建議大家模仿這種風格,起碼追女朋友的時候不能這樣,生活中很多機會在於接手的那一瞬間,失去就永遠找不回來了。

現在回來,後來偶然間,我看懂了一行代碼,是print 語句,當時興奮得要命,又仔細看了這個看了那個,一下子看懂了很多東西,像是在霎那間被什麼給擊中似的,立刻間醍醐灌頂。。。。

初三在學校學了FOXBASE,基本上自學的,我發現了一件奇怪的事,我這人是出了名的記性不好,然而當時背程序中的命令卻是過目不忘,到現在還記得很多,也許是感興趣吧,也感謝我的微機老師給我提供自由上機的機會!後來我又自學了QBASIC,初四暑假又學了一點C,那時學C遇到不少困難,當時我們學校機房連C語言都沒有,我只好悶在家裡,一本二級C教材,一本配套習題,整天發呆地想,把自己的腦袋當電腦cpu使,有時進入死循環,有時又徹底崩潰。我花十幾天看完了一本書,做完了一本題,然而腦袋裡充滿了疑惑,由於沒有上機實踐的機會,我就憑自己的猜測與推理己慢慢建立了一大堆理論,十分得意與自信,但後來證明大部分是錯的,害我花了很長時間去糾正,這是後話。可是,還是那句話不破不立,不阻不行。就像我現在有了電腦,整天泡在網際網路的海洋裡,感受著快餐文化,好久都沒靜下心來好好想點東西了.

高中還上過幾節電腦課,只不過忙於應付高考,我將學程序的打算放棄了,到這裡我該說下一個人了。

高中時坐我旁邊一女生,她的文曲星裡有BASIC,我偶爾拿過來編了幾個小程序玩,她看到後很感興趣,令人驚訝的是,她只看了三五個程序,聽我講了幾個命令的功能,就能根據自己的想像編出小動畫來,她此前是絕沒有學過程序的!我曾一度懷疑過她的智商,然而她程序是如此之快,卻讓我的眼都瞪大了好幾圈,比我當年高了好幾個境界!我後來經常在想,是不是我當時的方法不對,程序到底應該怎樣學。。。

一晃就到了大學,我碰到另一個讓我佩服的人,跟我一樣是學計算機的,他是偶爾看到我在編動畫,然後十分感興趣,便開始自學。他令人吃驚的是,指針,結構體,位運算等等,都沒搞懂(更不用說算法和數據結構),只學了三種程序結構,現在只學了C半年,便自己能編出貪吃蛇,俄羅斯方塊,掃雷,還有很多叫不出名字的小遊戲來,現在又在寫黑白棋,我知道我確實是走了不少彎路。

程序應該怎樣學,對C來講,我覺得應該從畫圖學起。

原因有二。

一,畫圖程序很能振奮人心的,它能帶給你濃厚的興趣,這是學程序的關鍵。

二,畫圖程序容易上手,很簡單的道理,就能做出很漂亮的東西來。有很多東西甚至不用看課本,就能自己推出來(我認為推理的方法很重要,它是你自學的必要條件)。

比如畫一個圓,從數學角度來分析,要確定一個圓,只需知道它的圓心(x,y)與半徑r,那好一個圓就畫出來了,circle(x,y,r);

其它的類推,再畫一個立體的,選擇立方體,再分析,只要知道兩個對角的坐標就行了吧,翻一下課本,不是這樣,為什麼?你或許會想到,電腦屏幕本來就是平面的,用立體坐標的理論在這裡,恐怕就不是最簡單的方法。所以它採用的應該是兩個平面圖形平移。此處留下疑問,立體圖形在平面坐標中怎麼表示?自己慢慢研究,很淺的東西。

想作動畫吧,想像一下動畫的原理只是從一個圖形變幻到另一個圖形,不同地變幻就出現動畫效果,那就可以畫一個,擦了,再畫一個新的,再變化。。。

數學功底好的話,從二維到三維,從靜態到動態我認為是很快的過渡。

具體該怎麼學呢,你可以多找幾個畫圖的例子,敲到電腦裡,多敲幾個,慢慢地你就會知道哪些東西是幹什麼的,慢慢地就會自己做出東西來。

但這裡不要沉溺太久了,先學畫圖只是幫助你輕鬆地入門(很多人C學完了還沒有入門)。

從畫圖裡暫時走出來,你應該打打基礎了,這裡不再贅述。可以邊學邊實踐,物理,數學課本中很多問題都可以用程序來演示,來解決,嘗試著多做些東西,這比你老學課本中的模型強多了,只有你自己去體會才能知道。

談及C語言,我想凡是學過它的朋友都有這樣一種感覺,那就是「讓我歡喜讓我憂。」歡喜的是,C語言功能非常強大、應用廣泛,一旦掌握了後,你就可以理直氣壯地對他人說「我是電腦高手!」,而且以後若是再自學其他語言就顯得輕而易舉了。憂慮的是,C語言猶如「少林武功」一般博大精深,太難學了。其實就筆者認為C語言並非是「difficult(困難)」的,只要你能理清思路,掌握它的精髓,那麼自學C語言是一件非常容易且又其樂無窮的事。今天本人就與大家一起談談如何學習C語言或者說學習C語言應從哪幾方面著手。

相關焦點

  • 古琴入門——自學、初學古琴必讀的10大書籍
    古琴入門——自學、初學古琴必讀的10大書籍古琴是中國的傳統樂器,至少有三千年歷史。琴作為一門藝術,使得越來越多的人去學習,而學習沒有指導書籍是不行的。一起來看看都有哪些指導書籍適合初學者學習。《琴學門徑》一本古琴入門指導書《琴學門徑》是一本書籍,該書力求由淺而深,循序漸進,以這樣初學者和自學者的實際要求。前半部分基本上包含了古琴入門所應具有的常試,後部分選刊琴譜,一方面由易而難,另一方面也斟酌多方資料,務求令習者了解不同流派風格的琴曲。
  • c語言50本電子書
    《C程序設計語言(中文版)》(第2版).pdfC語言從初學到精通.pdfC語言函數手冊.PDFC語言各章節知識點總結.pdfC語言常見問題集.pdfC語言開發從入門到精通.pdfC語言深度剖析.pdfC語言程序設計 李健 文字版.pdfC語言程序設計(第四版)譚浩強.pdfC
  • 【屈萬裡:初學必讀古籍簡目】
    c.文學書:《詩經》是不可不看的。此外可隨學生性之所近,選習兩三部專集,如陶潛、杜甫、王安石……陳同甫之類。 至民國十一年,適之先生復撰《再論中學國文的教授》一文,於上舉中學生自修應讀之書,除刪去《二十四史》外,餘悉仍舊。此外,並擬有「中學國故叢書」目錄,列舉古籍三十一種(其但列人名者,係指其詩文集而言),以備中學生閱讀。
  • c語言入門教程
    這本書被 C語言開發者們稱為"K&R",很多年來被當作 C語言的非正式的標準說明。人們稱這個版本的 C語言為"K&R C"。  c語言宣傳圖1970到80年代,C語言被廣泛應用,從大型主機到小型微機,也衍生了C語言的很多不同版本。
  • C語言程序設計入門學習六步曲(菜鳥福利哦!)
    在這一步基本掌握C語言編程軟體的使用方法(包括新建、打開、保存、關閉C程序,熟練地輸入、編輯C程序;初步記憶新學章節的知識點、養成良好的C語言編程風格)。 單擊此處查看【C語言的編程風格】    使用《Turbo C/C++ for Windows 集成實驗與學習環境》軟體可以很方便地看著軟體集成的《C語言入門教程》輸入練習其中的程序例題。具體使用方法參見軟體幫助部分。
  • C語言(初學)函數的使用
    #C語言初學#語言程序的基本單位是函數,聽著怪奇怪的那些int,float,double等不是單位嗎?C語言程序中一塊一塊的功能就是一個一個的函數來構成的。什麼是C語言函數。它的格式是這種 :函數返回值類型 函數名 ( 參數列表 ){//函數體}比如:
  • 收藏 | C語言必讀書籍——入門+進階
    今天聽人說Java不錯,想學;明天聽人說Python前景廣,想學;······評價任何一門程式語言,都是招人罵的。所以不予置否,只想總結一些C語言方面的乾貨給你。相信你應該已經知道了,C語言是一種非常流行、簡單且靈活的通用程式語言,被廣泛應用於各種應用程式中,但是作為一個C語言初學者該如何學習呢?推薦這幾本C語言的好書給你:這本書應該是是每個程式設計師的理想之選,但是為了你能夠更好的理解示例,所以在這之前請了解一下數據結構方面的知識。
  • C語言入門教程(一)
    C語言入門教程(一):輸入輸出函數、程序中的數據實驗環境Ubuntu 16.04 終端gcc
  • 初學編程,放棄C+而選擇C語言,究竟選對了還是選錯了?
    從事嵌入式開發十幾年,基本上圍繞著這兩種程式語言展開,都可以直接操作底層的程式語言,用的越熟練越是感覺工具屬性越強。雖然兩種程式語言分屬於不同的編程思想,用的時間長了覺得差異也不是很大,現在就個人的從業經歷,講述下兩種程式語言的差異和共同之處。
  • 摘要:初學C語言的朋友,可能不會編寫大小寫字母轉換的代碼,現在就...
    初學C語言的朋友,可能不會編寫大小寫字母轉換的代碼,現在就由我分享給大家。希望對大家有所幫助。實現任意大小寫字母轉換。代碼如下:#include<stdio.h>void main(){ char x='a'; printf("請您輸入任意大寫字母或者小寫字母x:\n"); scanf("%c",&x); if( x>='A' && x<='Z') { x=x+32; } else if( x>='a' && x<='z') { x=x-32
  • 入門C語言!
    也許有很多同學想學習C語言,卻不知道從什麼地方入手。或者有一些同學,學了一些基礎,太簡單的覺得枯燥無趣,有點複雜的又靜不下心來細細琢磨,也就是所謂的瓶頸時期,如果過了這個時期,C語言的學習就會順暢很多,高度也會大幅度提升。
  • C 語言程序設計---入門篇
    從本篇文章開始,我將分享 C 系列,將 C 語言的方方面面,從最基礎的語法帶領大家入門
  • c語言從入門到精通幾個階段
    本文主要結合往期學員學習階段,因材施教整理的幾個階段學習路線知識點:1.初級教程初級c語言入門教程比較適合零基礎的小白,這個周期一般在22天,度過這個階段的小白,基本上已經擁有了編程思維,且能開發簡單的
  • C語言入門教程-Scanf
    打開APP C語言入門教程-Scanf 佚名 發表於 2009-07-29 10:44:04 scanf函數使用的佔位符和printf的相同: int用%d float用%f char用%c 字符串(後面會討論)用%s 在使用scanf時,您必須在其變量前加上&。為什麼要這麼做的原因,在您學習指針後會很清楚。
  • 「C語言從入門到入土」必備C語言基礎筆記整理
    一、C語言1、什麼是C語言?C語言是人寫機器看的一種語言。C語言是高級語言中的低級語言。C語言貼近硬體。C語言的入門學習比較簡單。彙編語言——>B語言——>C語言2、C語言的特性首先C語言就是你的女朋友。無論你讓它幹什麼,它絕對不會自己找到方法。
  • 《C語言入門指南》上篇
    話所在前面:《C語言入門指南》,全文分為3篇。此為上篇,涵蓋知識點為:發展史、快速入門、程序運行機制、基礎知識、常量、運算符、二進位和位運算、程序的控制結構、枚舉,上篇全文共計20000餘字,適用初學者入門C語言,非初學者也可以通過本文複習C語言相關知識點,強化記憶!十三發布這篇筆記也是為了複習C語言!
  • 《C語言入門指南》中篇
    話所在前面:《C語言入門指南》,全文分為3篇。
  • 【愛找茬】都是C語言,單片機C語言和普通的C語言究竟有什麼差異呢?
    許多小夥伴在學完C語言後想入門單片機,但學著學著發現明明都是C語言,為什麼單片機C語言和我當初學的C語言有差異呢?今天小編就來梳理我們平時所學的C語言與單片機C語言的有什麼樣的不同。
  • C語言(初學)來編寫第一條代碼
    #C語言初學#C語言是一種高級語言,它可以用來幹很多事情C語言可以說C語言重要對計算機的發展非常重要。大學生在計算機專業先學的就C語言。C語言還是非常簡潔的,它的編寫邏輯性都不難。因為他是面對過程性語言,它就是一步一步按邏輯來非常好理解。編寫C語言的工具還是很多的:我推薦幾個:
  • C語言入門
    6、添加.c文件:快捷鍵:ctrl+shift+a——選擇「C++文件.cpp」——將名稱修改XXX.C格式。11、#include是c語言的預處理指令,用來引入<stdio.h>系統頭文件。main是函數名稱,int表示主函數執行完畢後會返回int類型的整形數據。{函數開始標誌,}函數結束標誌。printf是c語言庫函數,"XXXXXX"表示需要輸出的字符串。getchar是c語言庫函數,如果不寫,程序會一閃而過。return 0表示main函數執行結束並返回整數0。