標籤:
第1章是導言部分,內容相對簡單,可以快速閱讀一遍,並適當做一些練習,等學完後面章節再回頭做剩餘的練習。下面將簡單記錄幾個重要的知識點:
1.1-1.3
(1)【P2】C語言程式都是由函數和變數組成的,函數中包含一些語句statement,用以執行一些操作;變數則是用於儲存操作過程中需要使用的值;
(2)【P5】提到了程式的規範性寫法,需要注意的是
①Tab對應的是四個空格(而不是我以為的三個);
②操作符兩邊加空格與運算元隔離開來(我一直不加空格);
(3)【P6】printf的格式化輸出用法可詳見P135,這裡知道%6.1f是按照浮點數列印,至少6個字元寬,小數點後面有1位小數就可以;
1.4-1.5
(1)【P9】一般在程式內部中不直接使用300、20等數字,因為會導致閱讀困難,另外一個閱讀者可能並不理解數位含義,可以通過#define宏定義來聲明,這樣也方便修改。注意宏定義時的變數需要大寫,並且不帶分號。
(2)【P9】這裡瞭解一下文本模型:文字資料流是由多行字元構成的字元序列,而每行字元則由0個或多個字元組成,行末是一個分行符號,標準庫負責使每個輸入/輸出流都遵守這一模型。
字元在機器內部是以位元模式儲存的,一般用char類型,但是為了存放檔案結束符EOF,一般將接受字元的變數聲明為int類型。下面簡單說明一下EOF:
EOF是end of file的縮寫,表示"文字流"(stream)的結尾,它不是特殊字元,而是一個定義在標頭檔stdio.h的常量,#define EOF (-1),一般等於-1。以EOF作為檔案結束標誌的檔案,必須是文字檔,由於資料在文本中都是以字元的ASCII代碼值(範圍是0~127)的形式存放,不可能出現-1,因此可以用EOF作為檔案結束標誌。
注意這裡所說的"文字流",可以是檔案(file),也可以是標準輸入(stdin)。標準輸入與檔案不一樣,無法事Crowdsourced Security Testing道輸入的長度,必須手動輸入一個字元,表示到達EOF。在windows系統中,按下Ctrl+Z和斷行符號鍵來類比EOF條件,UNIX和Linux使用者應按Ctrl+D來類比。
EOF雖然是檔案結束符,但並不是在任何情況下輸入Ctrl+Z都能夠實現檔案結束的功能,只有在下列的條件下,才作為檔案結束符。
①遇到getcahr函數執行時,要輸入第一個字元時就直接輸入Ctrl+Z,就可以跳出getchar(),去執行程式的其他部分;
②在前面輸入的字元為分行符號時,接著輸入Ctrl+Z;
③在前面有字元輸入且不為分行符號時,要連著輸入兩次Ctrl+Z,這時第二次輸入的Ctrl+Z起到檔案結束符的功能。
(3)【P12】若是int類型範圍太小的話,可以使用long類型(最少是32位,由機器本身決定,有時會和int大小相同,若使用printf的話需要修改轉換說明為%ld),也可以使用更大的double;
(4)【P13】注意字元常量(用單引號)與字串常量(用雙引號)的區別。字元常量的值等於該字元在機器字元集中對應的數值,在運算式中只是一個整型數(跟所選用的機器字元集有關,不要以為只有ASCII字元集);
(5)【P14】1.5.4節的常式感覺相當精彩,亮點是使用state來判斷讀出的字元是否在單詞裡面,開始初始化state為OUT,然後c=getchar()讀入一個字元,不是空格/定位字元/分行符號之類字元的話就執行else if(state==OUT)將state設定為IN,一直到下一個空格/定位字元/分行符號(說明該單詞結束)為止;
還要注意nl=nw=nc=0;指派陳述式是從右至左執行的,而if(c==’ ’||c==’\n’||c==’\t’)是從左至右,只要有一個條件滿足就不會執行後面的語句判斷。
第1章-導言-1.1~1.5知識點