首頁 後端開發 C#.Net教程 C語言快速學習與入門指南

C語言快速學習與入門指南

Nov 26, 2016 am 09:05 AM
c c語言

有人認為,現在是java和.net的時代,有誰還需要C以及彙編呢?孰不知,java和.net是建立在軟體之上的,是為了壟斷市場而建立起來的體系,猶如挖好一個金壁輝煌的坑,請你往下跳,還自以為站在巨人的肩膀上,事實上成了坑底之蛙。要成為一個真正的程式設計師,並期望成為一個程式設計師高手,必須從機器出發,從cpu到作業系統,再到軟體體系,高手的境界就是悟道後的明鏡靈台,軟體設計出神入化,我就是程序,程序就是我。

旁觀者李四說:此人大笨也!我用滑鼠隨便拖幾個控件,就是一個xxx管理系統了,你用C語言怕是一年也寫不出來吧!好吧,我要承認,講這話的都已經是mS的奴才了,別的我不了解,MFC本身就是一個封閉的架構,從MFC入手學習,你只會形成一種封閉的思維模式,因為MS希望很多人只學會表面的東西,不致成為高手,所以它大力推薦所謂的可視化的程式開發工具,也真有很多人願意上他的當,最後真正迷失方向。說他坐不了程序吧,他也可以作,但是如果程序複雜一點,出現問題時,問題出再哪裡就搞不清楚了,反正是不清楚!

梁肇新,大牛啊,他說:"我就搞不懂了,用滑鼠怎麼寫程式呢?在我的公司裡,高手的鍵盤響個不停,滑鼠偶爾響一下,新手是滑鼠響個不停,鍵盤偶爾響一下,他們的薪水相差的就不是一倍那麼多了!某些地方是和組合語言混合開發的),君不見WindowsAPI都是C語言函數的介面? Unix/Linux絕大多數應用程式都是C語言開發的;Windows應用程式用純API開發已然不多,大多都是依賴某種ApplicationFramework,例如所謂的VC++,其實就是指VCIDE+C++語言+MFC(現在重點已轉向ATL、WTL),但是Windows服務、網路、驅動程式等底層軟體,還是C語言開發的。各種語言的編譯器,包括​​java虛擬機,都是用C語言開發的。各種嵌入式設備,如手機、PDA也都是C語言開發的。

第一個要裝進行囊和你一起前進是"規範的格式" 。所以說,規範的格式是入門的基礎。那這個規範的格式包含什麼呢?不少啊,要堅持才能做到!長標誌符命名,代碼縮進,一對大括號範圍不超過一螢幕,等等。

第二個要裝進行囊的是耐心,所謂工欲善其事,必先利其器。要成功,沒有一個相對平淡的過程是不可能的。這不只指你在學習過程中要有耐心,要循序漸進,而起也說的是另一個重要的面向:調式程序。調試是寫程序過程中一個重要的方面,如果有人能一次寫成程序,牛啊,而且是大牛,不光是大牛,還是老子騎的那頭青牛,凡人是做不道的!調試是每個程式必定經歷的歷程。

第一招,學什麼呢?打狗棍法!呵呵

有個偉人說過:"重複權威是成熟的必經之路",這是站在巨人的肩膀上的做法,習武之人首先要學的都是各種套路,比方說辟邪劍法,然後才能融會貫通,開宗流派;我們學習寫程式也要這樣來,這是一個捷徑,幫你走得更遠得捷徑。

看書,看好書!書中所寫,是前人數十年經驗所寫,看十本書,就相當於汲取了前人數十年的功力,那麼你的內功也會迅速上升1甲子。 :)書當然要看好書,只有好書才營養豐富。要做到讀書破萬卷,程式設計如有神;枯燥的看書是很鬱悶的,很容易變成化石!現在很多是書都是用原始碼說明問題的,原始碼就像是動畫、就像是幻燈片,把書中的招式一一演練給你看。 自己手排輸入這一步不能省略,現在很多書有配套源碼,很多同學或成年人學習的時候都耍小聰明,直接把源碼複製過去編譯運行,hoho,這是沒有效果的。

TC至少有一個好處,可以鍛鍊我們使用組合鍵的習慣,可以鍛鍊我們使用鍵盤編程的習慣。

一、要讀就讀好書,否則不如不讀

Kernighan和Ritchie的《TheCProgrammingLanguage》(中譯名《C程式設計語言》)堪稱經典中的經典,不過舊版的許多內容都已過時,和現在的標準C語言相去甚遠,大家一定要看最新的版本,否則不如不看。另外,即使是最經典最權威的書,也沒有辦法面面俱到,所以手邊常備一本《C語言參考手冊》是十分必要的。 《C語言參考手冊》就是《CReferenceManual》,是C語言標準的詳細描述,包括絕大多數C標準庫函數的細節,算得上是最好的標準C語言的工具書。順便提一句,最新的《C程式設計語言》是根據C89標準修訂的,而《C語言參考手冊》描述的是C99標準,二者可能會有些出入,建議按照C99標準學習。還有一本《C和指針》,寫得也是相當不錯,英文名是《PointersonC》,特別強調指針的重要性,算是本書的一個特點吧。不過這本書不是十分適合初學者,如果你曾經學過C語言,有那麼一些C語言的基礎但又不是很紮實,那麼你可以嘗試一下這本書。我相信,只要你了解指針,C語言就不再神秘。

如果你已經啃完了一本C語言教材,想要更進一步,那麼有兩本書你一定要看。首先是《CTrapsandPitfalls》(中譯名《C陷井與缺陷》),很薄的一本小冊子,內容非常非常有趣。要注意一點,這本書是二十多年前寫成的,裡面提到的許多C語言的缺陷都已被改進,不過能夠了解一些歷史也不是什麼壞事。然後你可以挑戰《ExpertCProgramming》(中譯名《C專家編程》),書如其名,這本書頗具難度,一旦你仔細讀完並能透徹理解,你便可以放心大膽地在簡歷上寫"精通C語言"了。

切記一個原則,不要讀自己目前還看不懂的書,那是浪費生命。如果你看不懂,那你一定是缺失了某些必備基礎知識。此時,你要仔細分析自己需要補充哪些內容,然後再去書店尋找講述的這些內容的書籍。把基礎知識補充完畢再回頭學習,才會真正的事半功倍。

二、Unix/Linux還是Windows,這是一個很大的問題

不同的程式環境會造就出不同思維的程式設計師。 Windows的程式設計師大多依賴整合開發環境,例如VisualStudio,而Unix程式設計師則更加鍾愛Makefile與控制台。顯而易見,整合開發環境更容易上手,在Windows上學習C語言,只需要會按下幾個基本的VisutalC++工具列按鈕就可以開始寫Hello,World!了,而在Unix下,你需要一些控制台操作的基本知識。有人也許認為Unix的環境比較簡潔,但習慣的力量是很大的 。

所以我建議初學者應該以VisualC++6.0(不是VisualC++.NET)或者DevC++作為主要的學習環境,而且千萬不要在IDE的使用技巧上過多糾纏,因為今後你一定要轉向Unix環境的。 VisualC++6.0使用很方便,調試也很直觀,但其預設的編譯器對C標準的支援並不好,而DevC++使用gcc編譯器,對C99的標準都支援良好。使用順帶提一下,很多大學的C語言課程還在使用TurboC2.0作為實驗環境,這是相當不可取的,原因其一是TC2.0對C標準幾乎沒有支持,其二是TC2.0編譯得到的程式是16位元的,這對今後理解32位元的程式會造成極大的困擾(當然,用djgpp之類的東西可以使TC2.0編譯出32位元程序,不過那過於復雜了)。

等你學完一本C語言的教材,你一定要轉向Unix平台繼續學習,幾乎所有的C語言高階教學都是基於Unix平台的(例如《C專家程式設計》)。轉變的過程是痛苦的,你需要面對的是各種紛繁複雜的指令,完全不同於Windows平台的思考方式,但這種痛苦是值得的。 Unix與C是共生的,Unix的思考方式與習慣更符合C語言的思考方式與習慣。在Unix下,你可以找到無數優秀的原始碼供你盡情閱讀,你可以方便地查看某個函式庫函數的線上手冊,還可以看到最優秀的程式碼風格(說到程式碼風格,我會專門寫一篇文章詳細敘述)。

歸結起來就是一句話:初學C語言,建議使用Windows系統和整合開發環境,在準備向"高手"方向努力時,請先轉向Unix平台。

三、萬事俱備,你就是東風

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

例子之後就是習題了,我建議初學者把所有的習題都獨立做一遍。

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

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

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

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

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

可是,還是那句話不破不立,不阻不行。就像我現在有了電腦,整天泡在網路的海洋裡,感受著速食文化,好久都沒靜下心來好好想點東西了。

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

就個人感觸,無論學習哪門語言首先應該了解一下自己所學語言的背景,也可以說它的發展史。 C語言屬於高階程式語言的一種,它的前身是"ALGOL"。其創始人是布朗·W·卡尼漢和丹尼斯·M·利奇。 C語言問世時是帶有很大的局限性,因為它只能用於UNIX系統上。然而隨著科學技術的進步,電腦工業的發展,C語言逐漸脫離UNIX。 1987年美國標準化協會制定了C語言的國際標準,簡稱"ANSIC",從此以後它便成為一種廣泛使用的程序語言。 C語言的優點很多,主要的有以下四點:

兼備高階語言與低階語言的優點,屬於一種中間語言。

它是一種結構化程式設計語言,非常適合結構化程式設計。

有較豐富的資料型別、運算子以及函數供以選用。

直接與記憶體打交道,使修改、編輯其他程式與文件變得輕鬆,簡單。

怎麼學好c語言?想盡快上手就得掌握計算機的特點,計算機的特點包括:

計算機在問題的處理方式上要求全,將所有的可能都要告訴它。

計算機要求程式的描述精確,無二義性。

電腦程式設計是要求有很強的全局性和邏輯性,不存在起伏的問題。

計算機要求它的主人,考慮問題要全面,所有可能的情況及處理都要告訴它,要求學會沉穩,心態要穩定,要求交流的語句一定要明了含義單一。

怎麼才能很快的學會c語言,更快的度過磨合期呢? C語言的語法規則記憶理解當然是必不可少的,除此之外還應注意以下幾個面向:

平衡心態,雖然不能做到"不以物喜,不以己悲"的水平,但至少不要浮躁,不要急於求成,欲速則不達。

培養自身的全局意識,既能小無內,也能大無外,才行。

嚴格依照程序設計流程設計程序,不要跳脫,天馬行空,沒有規矩是不成方圓的。

努力提升自身的綜合素質。程序是人思維的表達形式,是人處理問題想法和語言的結合。你對客觀看成到什麼程度和你所掌握的知識成正比。如果你對處理的問題不理解,不會處理,你怎麼也寫不出程序。

學會交流,多交流,互相補益,同時團隊合作也是很重要的。


本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1664
14
CakePHP 教程
1423
52
Laravel 教程
1321
25
PHP教程
1269
29
C# 教程
1249
24
C語言數據結構:樹和圖的數據表示與操作 C語言數據結構:樹和圖的數據表示與操作 Apr 04, 2025 am 11:18 AM

C語言數據結構:樹和圖的數據表示與操作樹是一個層次結構的數據結構由節點組成,每個節點包含一個數據元素和指向其子節點的指針二叉樹是一種特殊類型的樹,其中每個節點最多有兩個子節點數據表示structTreeNode{intdata;structTreeNode*left;structTreeNode*right;};操作創建樹遍歷樹(先序、中序、後序)搜索樹插入節點刪除節點圖是一個集合的數據結構,其中的元素是頂點,它們通過邊連接在一起邊可以是帶權或無權的數據表示鄰

C語言文件操作難題的幕後真相 C語言文件操作難題的幕後真相 Apr 04, 2025 am 11:24 AM

文件操作難題的真相:文件打開失敗:權限不足、路徑錯誤、文件被佔用。數據寫入失敗:緩衝區已滿、文件不可寫、磁盤空間不足。其他常見問題:文件遍歷緩慢、文本文件編碼不正確、二進製文件讀取錯誤。

debian readdir如何與其他工具集成 debian readdir如何與其他工具集成 Apr 13, 2025 am 09:42 AM

Debian系統中的readdir函數是用於讀取目錄內容的系統調用,常用於C語言編程。本文將介紹如何將readdir與其他工具集成,以增強其功能。方法一:C語言程序與管道結合首先,編寫一個C程序調用readdir函數並輸出結果:#include#include#includeintmain(intargc,char*argv[]){DIR*dir;structdirent*entry;if(argc!=2){

CS-第 3 週 CS-第 3 週 Apr 04, 2025 am 06:06 AM

算法是解決問題的指令集,其執行速度和內存佔用各不相同。編程中,許多算法都基於數據搜索和排序。本文將介紹幾種數據檢索和排序算法。線性搜索假設有一個數組[20,500,10,5,100,1,50],需要查找數字50。線性搜索算法會逐個檢查數組中的每個元素,直到找到目標值或遍歷完整個數組。算法流程圖如下:線性搜索的偽代碼如下:檢查每個元素:如果找到目標值:返回true返回falseC語言實現:#include#includeintmain(void){i

mySQL下載完安裝不了 mySQL下載完安裝不了 Apr 08, 2025 am 11:24 AM

MySQL安裝失敗的原因主要有:1.權限問題,需以管理員身份運行或使用sudo命令;2.依賴項缺失,需安裝相關開發包;3.端口衝突,需關閉佔用3306端口的程序或修改配置文件;4.安裝包損壞,需重新下載並驗證完整性;5.環境變量配置錯誤,需根據操作系統正確配置環境變量。解決這些問題,仔細檢查每個步驟,就能順利安裝MySQL。

c語言如何輸出倒數 c語言如何輸出倒數 Apr 04, 2025 am 08:54 AM

如何在 C 語言中輸出倒數?回答:使用循環語句。步驟:1. 定義變量 n 存儲要輸出的倒數數字;2. 使用 while 循環持續打印 n 直到 n 小於 1;3. 在循環體內,打印出 n 的值;4. 在循環末尾,將 n 減去 1 以輸出下一個更小的倒數。

C語言多線程編程:新手指南與疑難解答 C語言多線程編程:新手指南與疑難解答 Apr 04, 2025 am 10:15 AM

C語言多線程編程指南:創建線程:使用pthread_create()函數,指定線程ID、屬性和線程函數。線程同步:通過互斥鎖、信號量和條件變量防止數據競爭。實戰案例:使用多線程計算斐波那契數,將任務分配給多個線程並同步結果。疑難解答:解決程序崩潰、線程停止響應和性能瓶頸等問題。

c語言函數的定義調用聲明格式怎麼搞 c語言函數的定義調用聲明格式怎麼搞 Apr 04, 2025 am 06:03 AM

C語言函數包含定義、調用和聲明。函數定義指定函數名、參數和返回類型,函數體實現功能;函數調用執行函數並提供參數;函數聲明告知編譯器函數類型。值傳遞用於參數傳遞,注意返回類型,保持一致的代碼風格,並在函數中處理錯誤。掌握這些知識有助於編寫優雅、健壯的C代碼。

See all articles