C 程式設計語言-讀書筆記
阿新 • • 發佈:2019-02-08
說來慚愧,上大學學的第一門計算機程式語言就是c語言。到現在也有將近五年的時間了,可是對於C語言的理解還是停留在表面之上,今天拜讀了C語言的締造者B.W.Kernighan、D.M.Richie編寫的C語言程式設計才發現自己真的是從來沒有好好學過C語言。廢話少說,準備拜讀完該書,然後再系統的學習C語言的其他經典鉅著,演算法C語言實現,Unix程式設計藝術。
1.EOF
關於getchar()和putchar(),本書列舉了一個檔案複製的例項,程式碼如下:
#include<stdio.h> int main() { int c; while((ch = getchar()) != EOF) { putchar(ch0; } }
注意到示例中,變數c的型別為int型別,書中是這麼解釋的:c語言中為了將檔案中的有效資料與檔案末尾區分開來,採用的是下面的方案:當getchar()在沒有輸入時會返回一個特殊值,這個特殊值不能與實際的任何字元相混淆,這個值為EOF(end of file),ch必須被宣告為可以存放getchar()任何返回值的型別。之所以將ch宣告為int,是因為char型別不能存放於任何字元型別不同的EOF,所以定義了int型別表示ch。
EOF被定義在<stdio.h>檔案中,其為整數型別,使用列印函式列印EOF,輸出為-1;通過gdb除錯發現EOF記憶體中的值為:0xffffffff。