C語言是計算機體系結構的基礎,很多新人將C語言作為學習計算機的入門語言。作為新入門的新人,肯定會感到迷茫,很混亂,這時我們就需要適當的引導。本文教你如何滴水不漏地學完C語言,學好基礎知識,把握重點,不斷深入學習。
一、背景
C語言是一門面向過程的、抽象化的通用程序設計語言,廣泛應用于底層開發。它誕生于美國的貝爾實驗室,是由丹尼斯·里奇以肯尼斯·藍·湯普森設計的B語言為基礎發展而來。UNIX系統是世界上第一個真正的操作系統。而UNIX操作系統是用C語言編寫的,在當時這個系統很流行,于是C語言也跟著流行起來。而UNIX操作系統是開源的,所以別人要想學習,就要先學C語言。B語言被C語言改寫后,C語言流行了而B語言就被淘汰了。而且后來發現,C語言的確非常好,它是面向過程語言的代表,是有史以來最重要的一門計算機語言。二、學習方法
C語言是計算機體系結構的基礎,很多新人將C語言作為學習計算機的入門語言。作為新入門的新人,肯定會感到迷茫,很混亂,這時我們就需要適當的引導。對于一門語言的學習,不同的人有不同的方法,不過別人好的學習方法我們是可以拿來借鑒參考的。(1)看書
看書就是學習基礎知識,學習一門語言首先就是學習基本語法,學會了基礎知識才能有更加深入的發展。除了看一些書籍之外,還可以看一些教學視頻入門,畢竟別人講解演示學起來更加輕松一點。后文我也會推薦一些好的學習書籍和視頻,供大家參考學習。(2)敲代碼
想要學習好一門計算機語言,光看書籍學習知識點是遠遠不夠的。在學習知識點的同時一定要自己敲代碼進行練習。開始學習敲代碼的時候可以用一些輕便的編譯器,比如DevC++,熟練了之后可以使用VisualStudio這些較為大型的編譯器。感覺基礎知識掌握熟練之后,就可以開始接觸算法和數據結構之類的,再然后就可以刷題提高水平了。(3)練習項目
學習完基礎知識我們的目的還是實踐,所以我們就可以開始練習一些項目了。比如寫一個小的記事本、小游戲、計算器等經典的小項目。平時面對那些黑框框肯定會感覺到很枯燥無聊,當你做出一個小作品之后,你就會很有成就感,這也會極大的提升你的學習興趣。三、學習路線
學習一門語言先了解此語言的發展史,早期的C語言功能其實較為簡單,隨著應用和場景的變化,C語言的功能在不斷升級變化,功能也越來越強大。正式學習C語言之前了解一下計算機系統的組成以及工作原理也是很有必要的,除此之外還包括數據在計算機內部的存儲方式,以及進制之間的轉換。另外很重要的一點就是編譯環境和編譯器的學習,學習之初可以選擇一些簡單易上手的編譯器,隨著不斷深入學習選擇一個與時俱進的編譯器也是很重要的。學習完這些內容之后,我們就可以開始學習C語言基礎知識了。C語言編程離不開數據,幾乎所有的程序中都會涉及到數據,其中包含整型、浮點型、字符串等等。而C語言中存在著兩種表征數據的形式:常量和變量。常量可以用來表示數據的值,變量不僅可以用來表示數據的值,還可以用來存放數據。變量是用來存放數據,運算符則是用來處理數據。用運算符將變量和常量連接起來的符合C語言語法規則的式子稱為表達式。學習完這些之后,就開始接觸結構化程序設計語句。C語言基本控制結構有三種,分別是順序控制、循環控制、選擇控制。程序總是為解決某個實際問題而設計的,而問題往往包含多個方面,不同的情況需要有不同的處理,所以這些結構化程序語句在實際應用程序中可以說是無處不在,正確掌握結構化程序設計語句顯得尤為重要。如果用基本數據類型來定義某些變量,那么這些變量在內存中將占用各自的內存單元,變量之間的制約關系無法體現,不能表現出這些變量之間的關聯性,所以我們把這些變量稱為“離散變量”;但是如果我們需要操作100個或者是更多的數呢,定義100個變量就顯得不太現實,這時我們就引入了數組。數組是一組同類型的數據項的有序集合,我們就可以把100個要定義的變量存放到數組中。學習指針是學習C語言最重要的一環,能否正確地理解和使用指針是掌握C語言的一個標志,可以說不懂C語言的指針就不懂什么是C語言。指針也是C語言中最難學的一部分,學習時除了要正確理解基本概念,還必須要多編程,多上機敲代碼,只要做到這些,指針也是不難掌握的。前面介紹的都是簡單的數據類型,只能定義一些簡單的數據信息。對于復雜的數據信息是無法用前面所學的某個單一數據來定義的,必須使用C語言中提供的復雜數據類型來定義。復雜數據類型是C語言提供的不同于簡單數據類型的又一數據類型,它極大地豐富了C語言對數據信息的處理能力。3.1C語言基礎第一部分是C語言基礎,包括預處理指令、函數、變量和語句。即使是編寫最簡單的C語言程序,也是會用到這些基本概念。用一個經典的c語言程序,介紹c語言的基本構成、格式,使我們對c語言有個初步認識。一個C語言程序只有一個主函數,程序執行時從主函數開始,在主函數內結束;函數由函數說明和函數體兩部分構成;函數說明部分包含了對函數名,函數類型,函數參數等的定義和說明;函數體包含了變量說明和執行語句。3.2選擇結構和循環結構
C語言中有三大結構,分別是順序結構、選擇結構和循環結構。C語言順序結構就是讓程序按照從頭到尾的順序依次執行每一條C語言代碼,不重復執行任何代碼,也不跳過任何代碼。C語言選擇結構也稱分支結構,就是讓程序“拐彎”,有選擇性的執行代碼;換句話說,可以跳過沒用的代碼,只執行有用的代碼。C語言循環結構就是讓程序“殺個回馬槍”,不斷地重復執行同一段代碼。順序結構很好理解,無需過多闡述,簡單概述一下選擇語句和循環語句。其中有兩個選擇語句,if語句和switch語句。循環語句有三種,for循環語句,while循環語句,do……while循環語句。
3.3數組
數組就是一列具有相同類型的數據的集合,這些數據在內存中依次挨著存放,彼此之間沒有縫隙。C語言數組屬于構造數據類型。一個數組可以分解為多個數組元素,這些數組元素可以是基本數據類型或是構造類型。因此按數組元素的類型不同,數組又可分為數值數組、字符數組、指針數組、結構數組等各種類別。數組分為一維數組和二維數組,當數組中每個元素都只帶有一個下標時,稱這樣的數組為一維數組,一維數組實質上是一組相同類型數據的線性集合。二維數組本質上是以數組作為數組元素的數組,即“數組的數組”。3.4函數
每個C程序都至少有一個函數,即主函數main(),如果程序的任務比較簡單,全部的代碼都寫在main()函數中,但是,在實際開發中,程序的任務往往比較復雜,如果全部的代碼都寫在main()函數中,main()函數將非常龐大繁雜,結構混亂。我們可以根據程序的邏輯和任務的分工把代碼劃分到不同的自定義函數中,main()函數更關心業務邏輯和處理流程,需要執行具體任務的時候,調用其他的自定義的函數就可以了。引入函數得本質就是把一個復雜的任務分解為子任務,每一個子任務都是一個較小的功能模塊,通過實現這些小功能模塊來實現復雜的問題,從而使得比較復雜的問題變得簡單。3.5指針
沒學指針就是沒學C語言!指針是C語言的精華,也是C語言的難點,破解C語言指針,會讓你的C語言水平突飛猛進。所謂指針,也就是內存的地址;所謂指針變量,也就是保存了內存地址的變量。不過,人們往往不會區分兩者的概念,而是混淆在一起使用,在必要的情況下,大家也要注意區分。關于指針我們需要重點學習的內容有指針與地址、指針與函數參數、指針與數組、指針數組以及指向指針的指針和指向函數的指針等等。3.6結構體
C語言結構體從本質上講是一種自定義的數據類型,只不過這種數據類型比較復雜,是由int、char、float等基本類型組成的。你可以認為結構體是一種聚合類型。結構體部分重點學習包括結構體的定義方法、結構體的引用方法、結構體數組、結構體指針的概念及應用、結構體與函數。在實際開發中,我們可以將一組類型不同的、但是用來描述同一件事物的變量放到結構體中。例如,在校學生有姓名、年齡、身高、成績等屬性,學了結構體后,我們就不需要再定義多個變量了,將它們都放到結構體中即可。四、學習資料
4.1經典書籍
《CPrimerPlus(第6版)中文版》是非常經典的一本書籍,此書共17章。第1、2章介紹了C語言編程的預備知識。第3~15章詳細講解了C語言的相關知識,包括數據類型、格式化輸入/輸出、運算符、表達式、語句、循環、字符輸入和輸出、函數、數組和指針、字符和字符串函數、內存管理、文件輸入輸出、結構、位操作等。第16章、17章介紹C預處理器、C庫和高級數據表示。本書以完整的程序為例,講解C語言的知識要點和注意事項。每章末設計了大量復習題和編程練習,幫助讀者鞏固所學知識和提高實際編程能力。附錄給出了各章復習題的參考答案和豐富的參考資料。《C和指針》本書提供與C語言編程相關的全面資源和深入討論。本書通過對指針的基礎知識和高級特性的探討,幫助程序員把指針的強大功能融入到自己的程序中去。全書共18章,覆蓋了數據、語句、操作符和表達式、指針、函數、數組、字符串、結構和聯合等幾乎所有重要的C編程話題。書中給出了很多編程技巧和提示,每章后面有針對性很強的練習,附錄部分則給出了部分練習的解答。本書適合C語言初學者和初級C程序員閱讀,也可作為計算機專業學生學習C語言的參考。4.2學習視頻
現在網絡如此發達,網上的學習資源也是非常的豐富。大家可以自行上網查找適合自己的學習視頻,這里給大家推薦的是大學MOOC上的浙江大學翁愷老師講的C語言程序設計。這位老師講課非常的不錯,C語言基礎理論知識講解完善;循序漸進,從易到難,學習很輕松;語言組織嚴謹,風趣,很容易接受,讓你有一直學下去的動力。4.3華為云C++語言實戰進階學習資源(免費)
本課程從基礎語法、面向對象特性、異常處理、模板編程基礎、C++11新特性、STL標準庫容器和算法、并發編程、C++未來發展趨勢幾大模塊解構知識點,實戰場景+學習+練,精煉干貨講解幫助你快速掌握知識短板。立即點擊報名學習五、結語
C語言是國際上最流行的、應用最廣泛的高級編程語言之一。時至今日,它依然保持著旺盛的生命力,深受廣大程序員的歡迎。作為一種“個性鮮明”的編程語言,C語言既具有高級語言的優點,又有著低級語言的特性。很多大學或者是新入門的程序員都將C語言作為學習計算機的入門語言,學好C語言顯得尤為重要。我們一定要學號基礎知識,把握學習重點,不斷深入的學習。本文分享自華為云社區《【云駐共創】如何滴水不漏地學完C語言?》,作者:靜Yu。