ansi c 有翻譯和執行兩種環境,且不必在一台機器上,例如交叉編譯器(cross compiler);作業系統也是如此(freestanding environment)。
翻譯:將源**轉換為可執行機器指令
執行:實際執行**
翻譯經過以下階段:
形成的目標檔案字尾可能在不同系統下不同,如(.o/.obj)
cc -c xx.c #編譯產生.o目標**檔案
cc xx.c .... 直接產生可執行程式
cc xx.o ... 鏈結幾個目標**檔案
通常有作業系統由作業系統完成
標準沒有定義那些字元可以用,但是必須包含常用的一些字元和空白字元
??( // [
??) // ]
??< //
??= // #
??/ // \
??! // |
??' // ^
??- // ~
//第一類無特殊含義
\?\'
\"\\
//第二類有特殊含義
\a //警告字元,可能發出聲音,linux需要開啟警示音,windows是有聲音的。
\b //退格符,從現在\b的位置開始向前移動乙個位置,遇到\n,\r停止,開始輸出後面的內容
\f //進紙字元,從\f開始換一頁輸出後面的內容
\n //保持現在列的位置不變,換行輸出後面的字元(lf),顯示結果和理論有點衝突??結果\n和\r\n顯示的結果是一樣的??
\r //回車符cr,輸出前面的內容後,把游標移到行首,輸出後面的內容,不用換行符的話會覆蓋之前輸出的內容。
\t //相當於乙個四個空格的tab鍵
\v //這個好,顯示\n的真實效果,見上。
\ddd //"\ddd"每一位d都是乙個8進製數,這個字串就是表示對應的ascii字元
\xddd //與上同,只不過換成了16進製制
數字,字母,下劃線命名,但是不能以數字開頭,不能以關鍵字作為識別符號
1.auto do goto signed unsigned
2.break double if sizeof void
3.case else int static volatile
4.char enum long struct while
5.const extern register switch continue
6.float return typedef default for
7.short union
編寫乙個程式,它從標準輸入讀取c源**,並驗證所有的花括號"{}"都成對出現。
1 #include 2 #include 3
4 int main(void)
13 14 if(ch=='}')
18 19 }
20 21 if(braces>0) printf("%d unmatched closing braces\n",braces);
22 23
24 return exit_success;
25 26 }
第二章學習筆記
在c 中,陣列下標從0開始,而不是1.c 不支援陣列的抽象,也不支援對整個陣列的操作。在c 中,物件可以靜態分配 即編譯器在處理程式源 時分配,也可以動態分配 即程式執行時,用執行時刻庫函式來分配。靜態與動態記憶體分配的兩個主要區別是 1 靜態物件是有名字的變數,可以直接對你進行操作。而動態物件是沒...
第二章筆記
1.遞迴查詢和迭代查詢 遞迴查詢是一條環路,直接想成遞迴的定義就行,你想查乙個 的ip,首先將這個 傳給它的本地dns,然後認為本地dns可以直接將ip給你,然後本地dns為了知道這個ip又詢問下個dns伺服器。從此可以看出,增加了被涉及的伺服器的資料,所以一般用迭代查詢,迭代查詢是你詢問完後給你下...
TCPL第二章學習筆記
第二章我就隨便看了一看,覺得沒第一章難。第一張的刪除注釋之類的程式 練習中的 還是有點難度的。先說說 某變數 和 某變數 我設這個變數為n,n是先加後引用,而n 是先引用後加 先看下面 include int main void 這段 就能很好的說明 n和n 的些許區別 第二章中有乙個函式我覺得很經...