愛伊米

C語言簡明教程(一)C語言簡單剖析

C語言簡單剖析

實驗內容

本節課程將簡單介紹 C 語言的發展歷程及前景,並剖析 C 語言的編譯執行過程,寫出經典的 程式。

知識點

C 語言的歷史及地位

如何學習 C 語言

第一個 C 語言程式 -

C 語言開發環境

C 語言剖析

C 語言的歷史及地位

1972-1973 年,美國貝爾實驗室為了描述和實現 UNIX 作業系統(一個具有強大影響力的作業系統,我們實驗樓的實驗環境 Linux 系統就是一種類 UNIX 系統),於是改良了 B 語言,這就是今天的大名鼎鼎的 C 語言。

C 語言相當靈活,用於執行幾乎所有計算機可以完成的任務,既可以用於編寫應用程式,還可用於編寫作業系統,偉大的 Windows 和 Linux 作業系統的核心就是使用 C 語言開發的。C 語言包含了基本的程式設計元素,後來的很多語言(C++、Java 等)都參考了 C 語言,說 C 語言是現代程式語言的開山鼻祖毫不誇張,它改變了程式設計世界。

下面這張圖是 2014 年 10 月份 TIOBE 根據程式語言在企業中的使用情況統計出來的程式語言排行榜,程式猿們可以瞭解自己的程式設計技能的價值,以便跟上程式設計潮流。這一排行榜亦可以作為初學者們對未來發展方向選擇的參考依據。該資料每月都會更新,有興趣的小夥伴可以去官網檢視最新動態。

C語言簡明教程(一)C語言簡單剖析

透過該圖大家可以看到 17。8% 的程式是使用 C 語言寫的,雖然 C 語言是 70 後的老人,但它依然牢牢地佔據在排行榜首位。

無可替代的 C 語言

C語言簡明教程(一)C語言簡單剖析

這張圖同樣來自 TIOBE,透過這張圖大家可以發現從 2002 年至今,C 語言在程式設計中佔有比例一直保持穩定,java 語言卻呈現下跌態勢,兩者還會經常爭奪霸主地位。但是為什麼 java 所佔比例一直在下跌,而 C 語言卻保持穩定呢?主要是因為能夠代替 java 的語言不斷湧現和上升,而 C 語言能保持穩定,是因為在很多領域 C 語言是唯一的選擇,比如說做作業系統、做嵌入式系統。

美國一位資深軟體專家寫了一篇文章,題為“對計算機學生的建議”,可供參考。他說“大學生畢業前要學好 C 語言,C 語言是當前程式設計師共同的語言,比你在大學學到的現代語言(比如 ML,java,python 或者其它流行的語言)都更接近機器”。他指出“不管你懂多少延續、閉包、異常處理,只要你不能解釋為什麼  的作用是複製字串,那你就是在盲目無知的情況下程式設計,就像一個醫生不懂最基本的解剖學就在開處方”。

如何學習C語言

勤動手

C 語言並不是一門純理論課程,而是一門應用課程。學習過程中要透過大量的例題學習怎麼設計一個演算法,構造一個程式。初學時一定不要在語法細節上死記硬背,從一開始就應該編寫簡單程式,然後逐步深入。語法細節需要透過長期的程式設計實踐才能熟練掌握。

我們所給的習題,即使它們非常簡單,也要自己動手輸入。自己親自輸入,以後就不容易忘記。不要害怕用程式碼進行實驗。犯錯對程式設計而言非常有教育性!起初犯錯越多,學到的東西就越多。

勤思考

學習程式設計,主要是掌握程式設計的思路和方法。學會使用一種計算機語言程式設計,在需要時改用另一種語言應當也不會太難。不要設想今後一輩子只使用大學學過的某一種語言。在學習時要善於思考,舉一反三,完成一個程式需要什麼樣的演算法、怎麼去設計,要學會獨立思考。

勤查詢

很多同學在學習過程中稍微遇到點困難就想要放棄,遇到一點內容沒有懂就不往下學習了,常常半途而廢。在學習過程中我們難免遇到各種困難,遇到各種難懂的詞彙,遇到各種半天解不出來的題目。當碰到實在不明白的概念,可以放一放往前走。如果這些概念或者題目很重要,不懂就沒辦法往前走,那就好好利用下百度和 Google 吧。一個勤奮的少年,即使只給他一個 Google 或者百度,他也能學好一門語言。一個不上進的屌絲你給他買好十本 C 語言的書,找個骨灰級的程式猿帶他,他也學不會 C 語言程式設計。

開始!

在C語言編譯器中新建一個文件,命名為 1。1。c,輸入一下程式碼:

(我用的是VSCode,大家可以用其他的,程式設計的本質是不變的)

儲存好,讓你的程式執行,看看會出現什麼?

你的螢幕上面是不是顯示出了 “Hello FOMALHAUT”?小夥伴你表現不錯,這時你已經編寫一個程式並讓它運行了,可以的話,想想怎麼顯示自己設定的字元呢?

額外插入

在 Windows 下執行 C 語言程式

Windows 下的 C 程式設計常常使用 VC++ 6。0 或者 Dev C++ 5。7。1,VC++ 6。0 是一個整合開發環境(IDE),簡單來講就是程式設計、編譯、連結和執行整合在了一個軟體上面。我們暫且不需要你去學習在 Windows 下的 C 語言程式設計。當然,如果你想要了解如何在 Windows 下程式設計 C 語言,網上有非常多的其它相關教程可以供你學習參考。

插入結束

剖析 C 語言

接下來我們將以剛才編寫的名稱為1。1的 C 程式為材料,來講解 C 程式的建立過程以及 C 語言的程式結構。

建立 C 程式

編輯

編譯

連結

執行

C 語言的簡單結構

預處理指令

函式

程式框架

函式

建立 C 程式

C 程式的建立過程有四個基本步驟:

編寫;

編譯;

連結;

執行。

編寫

編輯的過程就是建立和修改 C 程式的原始碼——我們使用 gedit 編寫的程式便是原始碼。其實在 Linux 上,最常用的文字編輯器是 Vim 編輯器,為了讓大家更便捷地理解 C 語言我們採用了 gedit 編輯器,

編譯

編譯器可以將原始碼轉換成機器語言,在編譯過程中,會找出錯誤並報告。這個階段的輸入是在編輯期間產生的檔案,常稱為原始檔。

編譯器能找出程式中很多無效的和無法識別的錯誤,包括結構錯誤,例如程式的某個部分永遠不會執行。編譯器輸出的結構叫作物件程式碼,存放它們的檔案叫作物件檔案。在 Linux 中這些檔案的副檔名通常是 。o,在 Windows 下面這些檔案的副檔名通常是 。obj 。如果編譯成功就會生成一個檔案,它與原始檔同名。但副檔名為 。o 或者 。obj。

連結

連結器將原始碼檔案中由編譯器產生的各種物件模組組合起來,再從 C 語言提供的程式庫中新增必要的程式碼模組,將它們組合成一個可執行檔案。連結器也可以檢測和報告錯誤,例如程式中引用了一個根本不存在的庫元件。連結一旦成功,就會生成可執行檔案,在 Windows 下面可執行檔案的副檔名是 。exe,在 Linux 下面,可執行檔案沒有副檔名,但它的檔案型別是可執行的。

執行

執行階段就是成功完成了前述的三個過程後,執行程式。但是這個階段可能會出現各種錯誤,包括輸出錯誤,計算機什麼也不做哦,甚至是計算機崩潰。無論如何,都需要我們返回編輯階段,檢查並修改原始碼。

建立 C 程式的各個過程:

C語言簡明教程(一)C語言簡單剖析

C 語言的簡單結構

預處理指令

程式的第一行程式碼如下:

嚴格地說,它不是可執行程式的一部分,但它很重要,它是 C 語言中的標準輸入輸出庫,程式沒有它將不能做任何輸入輸出。符號 # 表示這是一個預處理指令,告訴編譯器在編譯原始碼之前,要先執行一些操作。編譯器在編譯過程開始之前的預處理階段會處理這些指令。預處理指令的型別相當多,大多放於程式原始檔的開頭。

在這個例子中,編譯器要將  檔案的內容包含進來,這個檔案被稱為標頭檔案,因為通常放在程式的開頭處。在本例中,標頭檔案定義了 C 標準庫中一些函式的資訊,本例要用到標準庫中的  函式,所以必須包含  標頭檔案。stdio 是 “standard input & output” 的縮寫,包含了編譯器理解  以及其它輸入 / 輸出函式所需要的資訊。C 語言所有標頭檔案的副檔名都是 。h 。在以後的學習過程中大家會看到很多其它的預處理指令。

函式

函式是“主函式”。每個 C 程式都由一個或多個函式組成,但每個 C 程式都必須有一個  函式——因為每個程式總是從這個函式開始執行。

程式的幾乎全部工作都是由各個函式分別完成的,函式是 C 程式的基本單位,在設計良好的程式中,每個函式都用來實現一個或多個特定的功能。

一個 C 語言程式由一個或者多個函式組成,其中必須包含一個  函式(且只能有一個  函式)。

一個函式包括兩個部分:

一是 函式首部 即函式的第一行:

二是 函式體 即函式首部下面的花括號內的部分:

函式的內容我們會在以後會涉及,這裡只是簡單的提及。

程式框架

我們的所有程式都需要寫上這一段,直到學習函式之前,我們的程式碼都是放在 “xxxx” 的位置,所以以後你每次寫程式的時候,可以先把這個框架寫上去,再在這個框架中間寫程式碼。

函式

是 C 編譯系統提供的函式庫中的輸出函式。

函式中雙引號內的字串 “Hello world” 按照原樣輸出,每個語句最後都有一個分號,表示語句結束。