目錄3. c語言的應用範圍
4.計算機能做什麼
5. c語言標準
7. 使用c語言的7個步驟
8. 程式設計機制
2023年至2023年間,為了移植與開發unix作業系統,由丹尼斯·里奇與肯·湯普遜,以b語言為基礎,在貝爾實驗室設計、開發出來。
c語言具有高效、靈活、功能豐富、表達力強和較高的可移植性等特點,在程式設計中備受青睞,成為使用最為廣泛的程式語言。目前,c語言編譯器普遍存在於各種不同的作業系統中,例如microsoft windows、macos、linux、unix等。c語言的設計影響了眾多後來的程式語言,例如c++、objective-c、j**a、c#等。
二十世紀八十年代,為了避免各開發廠商用的c語言的語法產生差異,由美國國家標準局為c語言訂定了一套完整的國際標準語法,稱為ansi c,作為c語言的標準。二十世紀八十年代至今的有關程式開發工具,一般都支援符合ansi c的語法。
2.1 設計特性
c語言的設計理念讓使用者能輕鬆完成自頂向下的規劃、結構化程式設計和模組化設計。因此,用c語言編寫的程式更易懂、更可靠。
2.2 高效性
c語言具有通常是組合語言才具有的微調控制能力,可以根據具體情況微調程式以獲得最大執行速度或最有效地使用記憶體。
2.3 可移植性
c語言是移植語言。在一種系統中編寫的c程式稍作修改或不修改就能在其他系統執行。
2.4 強大而靈活
c語言功能強大且靈活,如unix作業系統是用c語言寫的。其他的一些語言(fortran、perl、python、pascal、basic)的編譯器和直譯器都是c語言編寫。
2.5 面向程式設計師
c語言是為了滿足程式設計師的需求而設計的,程式設計師利用c可以訪問硬體、操作內在中的位。c語言有豐富的運算子,能讓程式設計師簡潔表達自己的意圖。
早在20世紀80年代,c語言就有已經成為小型計算機使用的主流語言。從那以後c語言的應用範圍擴充套件到微型機和大型機。c語言是嵌入式系統程式設計的流行語言,還能從科學程式設計領域分一杯羹,而且作為開發作業系統的主流語言c在linux開發中扮演著極其重要的角色。
**處理單元(cpu)承擔絕大部分的運算工作。隨機訪問記憶體(ram)是儲存程式和檔案的工作區。而永久記憶體儲存裝置(硬碟:機械硬碟和固態硬碟)在關閉計算機後也不會丟失之前儲存的程式和檔案。還有各種外圍裝置(鍵盤、滑鼠、觸控螢幕、顯示器)提供人與計算機之間的互動。
c語言發展之初,並沒有所謂的c標準。2023年布萊恩·柯林漢和丹尼斯·里奇合著的(《c語言程式設計》)第1版是公認的c標準。
5.1 第1個ansi/iso c標準
2023年美國國家標準協會(ansi)組建了乙個委員會(x3j11),開發了一套新標準,並於2023年正式公布。該標準(ansi c)定義了c語言和c標準庫。國際標準化組織於2023年採用了這套標準(iso c).iso c 和 ansi c是完全相同的標準。ansi/iso 標準的最終版本通常叫c89.
c精神:
在2023年,ansi c標準(帶有一些小改動)被國際標準化組織採納為iso/iec 9899:1990,這個版本有時候稱為c90。因此,c89和c90通常指同一種語言。
5.2 c99標準
2023年 ansi/iso聯合委員會(c9x委員會)開始修訂c標準,最終發布了c99標準。委員會的用意不是在c語言中新增新特性,而是為了達到新的目標
5.3 c11標準
標準委員會在2023年承諾c標準的下乙個版本是c1x,2023年終於發布了c11標準。此次委員會提出了一些新的指導原則,不在那麼強調"信任程式設計師"目標了。而且c99中的一些特性成為c11的可選項了。
5.4 c18 標準
c18(也被稱為為c17)是於2023年6月發布的iso/iec 9899:2018的非正式名稱, 也是截止到2023年6月為止最新的c語言程式設計標準。 它被用來替代c11標準(即iso/iec 9899:2011),c18沒有引入新的語言特性,只對c11進行了補充和修正。它是c語言的現行標準。
c18標準即將被c2x標準所取代,c2x引入了一些新特性。目前可以確定的是,c2x標準將加入符合ieee標準的十進位制浮點數,這使得計算機能夠精確地儲存浮點數。
定義程式的目標
明確想做什麼
設計程式
如何組織程式,目標使用者是誰,花多長時間完成這個程式,程式中如何表示資料,怎麼處理資料?
編寫程式
編譯執行程式
測試和除錯程式
維護和修改**
用c語言編寫程式時,編寫的內容被儲存在文字檔案中,該檔案被稱為源**檔案(source code file),大部分c系統,都要求檔名以.c結尾。在檔名中,點號(.)前面的部分稱為基名(basename),點號後面的部分稱為副檔名(extension).
cat concrete.c
#include int main(void)
8.1 目標**檔案、可執行檔案和庫
把源**檔案轉換成可執行檔案,編譯器把源**轉換成中間**,鏈結器把中間**和其他**合併,生成可執行檔案。c使用這種分而治之的方法方便對程式進行模組化,可以獨立編譯單獨的模組,稍後再用鏈結器合併已經編譯的模組。
中間**檔案有多種形式,在這裡主要指把源**轉換為機器語言**,並把結果放在目標**檔案中。這時目標**檔案還缺失啟動**(startup code)啟動**充當著程式和作業系統之間的介面。除啟動**外還缺少庫函式,幾乎所有的c程式都要使用c標準庫中的函式,目標**檔案並不包含該函式的**。鏈結器的作用就是把目標**、系統的標準啟動**和庫**這3部分合併成乙個檔案。即可執行檔案。
目標檔案和可執行檔案都由機器語言指令組成的。目標檔案中只包含編譯器為你編寫的**翻譯的機器語言**,可執行檔案中還包含編寫的程式中使用的庫函式和啟動**的機器**。
8.2 gnu編譯器集合和llvm專案
gnu專案始於2023年,是乙個開發大量免費unix軟體的集合。gnu編譯器也被稱為gcc,是該項目的產品之一。
llvm始於伊利諾伊大學的2000份研究專案。它的clang編譯器處理c**。2023年clang成為freebsd的預設c編譯器。
檢視gcc版本:
gcc -v
編譯時使用不同的c標準
gcc -std=c99 inform.c #呼叫c99標準
gcc -std=c1x inform.c #呼叫gcc接受c11之前的草案標準
gcc -std=c11 inform.c #呼叫gcc接受的c11標準
組合語言第一章 初始
組合語言是一種占用空間少,執行速度快,直接控制硬體能力強,開發周期長且可移植性差的語言。建立二進位制數描述一切的觀念,二進位制數可以表示,數值,文字,影象,聲音,程式。其含義只能由使用這些資訊的人進行解釋。首先的知識點是對進製計數的概念,和不同進製之間的相互轉換。由十進位製到r進製的轉換 整數部分 ...
C 程式語言(第一章)
一.全書結構 1,1 3章,c 程式設計風格,以及有關c 標準庫的綜述 2,4 9章,c 內部型別 3,10 15,c 物件導向和通用型程式設計 4,16 22,c 標準庫 5,23 25,設計和開發軟體 6,附錄 二.給c程式設計師得建議 1,c 裡幾乎不需要用巨集,用const或enum定義明顯...
第一章 初識C語言
一 初識c語言 1 c語言簡介 c語言一經出現就以其功能豐富 表達能力強 靈活方便 應用面廣等特點迅速在全世界普及和推廣。c語言不但執行效率高而且可移植性好,可以用來開發應用軟體 驅動 作業系統等。c語言也是其它眾多高階語言的鼻祖語言,所以說學習c語言是進入程式設計世界的必修課。2 第乙個c程式 i...