起初,c語言沒有官方標準。2023年由
美國**電報公司(at&t)貝爾實驗室正式發表了c語言。布萊恩·柯林漢(brian kernighan) 和 丹尼斯·里奇(dennis ritchie) 出版了一本書,名叫《
the c programming language》。這本書被 c語言開發者們稱為
k&r,很多年來被當作 c語言的非正式的標準說明。人們稱這個版本的 c語言為
k&r c。
[3]k&r c主要介紹了以下特色:
結構體(struct)型別
長整數(long int)型別
無符號整數(unsigned int)型別
把運算子=+和=-改為+=和-=。因為=+和=-會使得編譯器不知道使用者要處理i = -10還是i =- 10,使得處理上產生混淆。
即使在後來
ansi c標準被提出的許多年後,k&r c仍然是許多編譯器的最 準要求,許多老舊的編譯器仍然執行k&r c的標準。
1970到80年代,c語言被廣泛應用,從大型主機到小型微機,也衍生了c語言的很多不同版本。
2023年,美國國家標準協會(ansi)成立了乙個委員會x3j11,來制定 c語言標準。
[4]2023年,美國國家標準協會(ansi)通過了c語言標準,被稱為
ansi x3.159-1989 "programming language c"。因為這個標準是2023年通過的,所以一般簡稱
c89標準。有些人也簡稱
ansi c,因為這個標準是美國國家標準協會(ansi)發布的。
2023年,
國際標準化組織(iso)和
國際電工委員會(iec)把c89標準定為c語言的國際標準,命名為
iso/iec 9899:1990 - programming languages -- c
[5] 。因為此標準是在2023年發布的,所以有些人把簡稱作
c90標準。不過大多數人依然稱之為
c89標準,因為此標準與ansi c89標準完全等同。
2023年,國際標準化組織(iso)和國際電工委員會(iec)發布了c89標準修訂版,名叫iso/iec 9899:1990/cor 1:1994
[6],有些人簡稱為
c94標準。
2023年,國際標準化組織(iso)和國際電工委員會(iec)再次發布了c89標準修訂版,名叫iso/iec 9899:1990/amd 1:1995 - c integrity
[7],有些人簡稱為
c95標準。
2023年1月,國際標準化組織(iso)和國際電工委員會(iec)發布了c語言的新標準,名叫
iso/iec 9899:1999 - programming languages -- c
[8] ,簡稱
c99標準。這是c語言的第二個官方標準。
在c99中包括的特性有:
增加了新關鍵字 restrict, inline, _complex, _imaginary, _bool
支援不定長的陣列,即陣列長度可以在執行時決定,比如利用變數作為陣列長度。宣告時使用 int a[var] 的形式。不過考慮到效率和實現,不定長陣列不能用在全域性,或 struct 與 union 裡。
變數宣告不必放在語句塊的開頭,for 語句提倡寫成 for(int i=0;i<100;++i) 的形式,即i 只在 for 語句塊內部有效。
允許採用(type_name) 類似於 c++ 的建構函式的形式構造匿名的結構體。
復合字面量:初始化結構的時候允許對特定的元素賦值,形式為:
struct test foo = , [1].a = 2 };
struct test foo = ; // 3,4 是對 .c,.d 賦值的
增強的unicode的支援。基於c unicode技術報告iso/iec tr 19769:2004,增強了對unicode的支援。包括為
utf-16/
utf-32編碼增加了char16_t和char32_t資料型別,提供了包含
unicode字串轉換函式的標頭檔案.
刪除了
gets() 函式,使用乙個新的更安全的函式gets_s()替代。
增加了邊界檢查函式介面,定義了新的安全的函式,例如 fopen_s(),strcat_s() 等等。
增加了更多浮點處理巨集。
匿名結構體/聯合體支援。這個在
gcc早已存在,
c11將其引入標準。
靜態斷言(static assertions),_static_assert(),在解釋 #if 和 #error 之後被處理。
新的 fopen() 模式,(「…x」)。類似 posix 中的 o_creat|o_excl,在檔案鎖中比較常用。
新增 quick_exit() 函式作為第三種終止程式的方式。當
exit()失敗時可以做最少的清理工作。
2023年11月2日學習總結
繼續按照計畫複習c語言的迴圈結構,同分支結構一樣,難度不大,理解起來也很容易。晚上第一節嵌入式課程開始,並沒有立刻講什麼深奧的專業知識,而是系統地了解了嵌入式的概念。簡單來說嵌入式開發與傳統的微控制器開發的的最明顯的乙個區別就在於作業系統。嵌入式開發可通過在作業系統上開發應用軟體來控制硬體,而不需要...
2023年11月3日學習總結
函式 儲存類和與處理程式要點彙總 1 函式 函式部分重點在於函式的呼叫,而常見的呼叫有巢狀呼叫和遞迴呼叫,因為c語言不支援函式的巢狀定義,就是不能在定義好的乙個函式中再定義另乙個函式,但是c語言可通過函式呼叫的巢狀來實現一些稍複雜的功能。除此以外,函式呼叫可以在呼叫乙個函式的過程中呼叫該函式的本身,...
2023年11月5日學習總結
宣告 本文擷取段落來自linux社群,作者richerg85 linux目錄和windows目錄有著很大的不同,linux目錄類似乙個樹,最頂層是其根目錄,如下圖 bin二進位制可執行命令 dev裝置特殊檔案 etc系統管理和配置檔案 etc rc.d啟動的配置檔案和指令碼 home使用者主目錄的基...