我想任何事物的產生都離不開歷史,看過《矽谷傳奇》 《作業系統的革命》《浪潮之巔》,了解下歷史。乙個新事物的誕生,都是當時需要改變現狀或者解決什麼問題,c也不列外。在c之前有 ibm 的 fortran ,蓋茨擅長的basic ,說到這個想有人說windows是vb開發的,很可能是由蓋茨起初使用basic 開發軟體聯想到的吧,c的誕生和當初開發unix密不可分,都是貝爾實驗室的,當時的intel 推出 8086開始有了棧暫存器,軟硬的環境都滿足了。
linux上的編譯器當然是gnc/gcc了,unix上的是cc,windows上常用的是cl。
細化:c源程式->編譯預處理->編譯->.優化程式->匯程式設計序->鏈結程式->可執行檔案。
在gcc 編譯的時候加上 -v 引數可以檢視到編譯過程。
c 使用被劃分為兩部分的這一方法是程式便於模組化,鏈結器將我們的程式與預編譯的庫**結合起來。
c 沒有官方標準,美國國家標準組織ansi發布第乙個了c標準稱為c89標準或c90,也常稱為ansi c.在之前《the c programming language》稱為大家接受的標準。通常稱為k&r c 或經典 c。在c90最初原則上修改標準發布了c99標準,gcc下需要加引數 -std=c99開啟 c99標準。
第乙個經典的程式
#include int main(void)
#include 語句是c預處理的指令,不屬於c語言語句,體現了c語言的乙個基本設計原則:避免不必要的成分。
main()函式
int main(void ) ,int 指明了main()函式的返回型別,main函式返回給系統,
在vs 下 main函式可以這樣寫 :
void main()
但並不是標準形式,在gcc c99下會提示警告:
warning: return type of 'main' is not 'int' [-wmain]
多行注釋:
/* 我是多行注釋
*/c99增加了單行注釋:
//iso/ansi c關鍵字
auto
enum
restrict
unsigned
break
extern
return
void
case
float
short
volatile
char
forsigned
while
const
goto
sizeof
_bool
continue
ifstatic
_complex
default
inline
struct
_imaginary
doint
switch
double
long
typeof
else
register
union
_bool _complex _imaginary 為c99標準新增。
那麼new關鍵字在c語言中是合法的識別符號嗎?
在vs中如果字尾名為cpp那麼將會報錯,但如果字尾名為c,那麼不會報錯,new 是c++的關鍵字,但不是c的關鍵字。
37個關鍵字解釋:
一、資料型別關鍵字(12個):
1、char [tʃɑ:]:宣告字元型變數或函式
2、double [ˈdʌbəl] :宣告雙精度變數或函式
3、enum :宣告列舉型別
4、float [fləut] :宣告浮點型變數或函式
5、int[int]: 宣告整型變數或函式
6、long [lɔŋ] :宣告長整型變數或函式
7、short [ʃɔ:t] :宣告短整型變數或函式
8、signed:宣告有符號型別變數或函式
9、struct:宣告結構體變數或函式
10、union [ˈju:niən]:宣告共用體(聯合)資料型別
11、unsigned [ʌn'saind]:宣告無符號型別變數或函式
12、void [vɔid] :宣告函式無返回值或無引數,宣告無型別指標(基本上就這三個作用)
二、控制語句關鍵字(12個):
a迴圈語句
1、for [fə, fɔ:]:一種迴圈語句(可意會不可言傳)
2、do [du, du:] :迴圈語句的迴圈體
3、while [wail] :迴圈語句的迴圈條件
4、break [breik]:跳出當前迴圈
b條件語句
1、if [if]: 條件語句
2、else [els] :條件語句否定分支(與 if 連用)
3、goto:無條件跳轉語句
c開關語句
1、switch [switʃ]:用於開關語句
2、case [keis]:開關語句分支
3、default [diˈfɔ:lt]:開關語句中的「其他」分支
d返回語句
1、return [riˈtə:n]:子程式返回語句(可以帶引數,也看不帶引數)
三、儲存型別關鍵字(4個)
1、auto [ˈɔ:təu] :宣告自動變數(一般不使用)
2、extern:宣告變數是在其他檔案正宣告(也可以看做是引用變數)
3、register [ˈredʒistə]:宣告積存器變數
4、static[ˈstætik] :宣告靜態變數
四、其它關鍵字(4個):
1、const :宣告唯讀變數 (*注意是變數*)
2、sizeof:計算資料型別長度
3、typedef:用以給資料型別取別名(當然還有其他作用)
4、volatile [ˈvɔlətail]:說明變數在程式執行中可被隱含地改變
五、c99新增(5個)
1、inline 關鍵字用來定義乙個類的內聯函式,引入它的主要原因是用它替代c中表示式形式的巨集定義
引入原因:c語言是乙個效率很高的語言,這種巨集定義在形式及使用上像乙個函式,但它使用預處理器實現,沒有了引數壓棧,**生成 等一系列的操作
2、restrict 關鍵字只用於限定指標;該關鍵字用於告知編譯器,所有修改該指標所指向內容的操作全部都是基於(base on)該指標的,即不存在其它進行修改操作的途徑;這樣的後果是幫助編譯器進行更好的**優化,生成更有效率的彙編**。
3、_bool 關鍵字是用於表示布林值。包含標準標頭檔案 stdbool.h 後,我們可以用 bool 代替 _bool ,true 代替 1 ,false 代替 0 。
4、_complex and _imaginary 關鍵字
c99標準中定義的複數型別如下:float_complex; float_imaginary; double_complex; double_imaginary; long double_complex; long double_imaginary.
標頭檔案中定義了complex和imaginary巨集,並將它們擴充套件為_complex和_imaginary,因此在編寫新的應用程式時,應該使用標頭檔案中的complex和imaginary巨集。
C學習筆記 概述
1 語言簡潔 c語言共有32個關鍵字,9種控制語句。2 運算子豐富 共有34中運算子。c語言把括號 賦值 強制型別轉換都作為運算子處理。3 資料結構豐富 資料型別有整形 實型 字元型 陣列型別 指標型別 結構體型別 共用體型別。能實現各種複雜的資料結構,如鍊表 樹 棧等。4 具有結構化得控制語句 用...
C 筆記1 概述
c 筆記1 概述 作者1982 年,美國 at t 公司貝爾實驗室的 bjarne stroustrup 博士在 c 語言的基礎上引入並擴充了物件導向的概念,發明了一種新的程式語言。為了表達該語言與 c 語言的淵源關係,它被命名為 c 而 bjarne stroustrup 本賈尼 史特勞斯特盧普 ...
C 學習筆記 STL概述
c 語言的核心優勢就是便於軟體的重用。c 中有兩個方面體現重用 1.物件導向的思想 繼承和多型,標準類庫 2.generic programming 泛型程式設計 的思想 模板機制以及標準模板庫 stl 也就是說使用模板的程式設計。stl standard template library 就是一些...