第4章至第11章要點記錄

2021-07-17 05:14:22 字數 2104 閱讀 4329

sizeof操作符,它以位元組為單位給出資料大小。strlen()函式以字元為單位給出字串的長度。

因為乙個字元只占用乙個位元組,所以可能認為這兩個操作會得到相同的結果,事實並非如此。

見程式praise2.c

建立常量的三種方式: #define    const    列舉。

深入了解一下printf和scanf。

它們稱為轉換函式更加準確。

鍵盤輸入的是文字,當你輸入整數2004時,實際上鍵入的字元為2 、 0、  0、  4 。那麼程式就必須能把這個字串逐個字元的轉換成數值,這就是scanf的工作。printf恰好相反,它把各種數值轉換成文字顯示在螢幕上。

scanf函式每次讀取乙個文字單詞,依照說明進行轉換,並跳過單詞之間的空格。如果第乙個單詞就不匹配,scanf就會停在那裡,結束。下一次再讀取,還會從這個位置開始。

scanf函式返回成功讀入的個數。

比如scanf(「%d %s」, &num, name); 第乙個單詞會被轉換成十進位制整數,第二個被轉換成字串。都成功了,返回值為2.

傳統上,c語言習慣用int型別作為標誌,但是新型的_bool型更符合需求,通過包含stdbool.h標頭檔案,可以用bool代替關鍵字_bool,並用true和false代替1和0.

僅僅處理字元的函式:

getchar,putchar

ch =getchar() 與 scanf(「%c」,&ch)等價。    putchar(ch) 與 printf(「%c」, ch)等價。

用來處理字元,它們更簡潔。

配合ctype.h標頭檔案提供的字元系列函式,能做不少事情。

邏輯運算子

&&  ,  ||,     ! 

與,  或 ,  非

這些符號是使用美式鍵盤列印出的,而在世界各地,不是所有的鍵盤都有與美式鍵盤相同的符號。

為了解決這個問題,c99提供了iso646.h標頭檔案,包含它,可以用 and ,or,  not 代替。

i/o可分為

1.  非緩衝的: 輸入內容對程式立即可用。——取決於計算機系統,缺乏可移植性

2.  緩衝的: 鍵入的字元被儲存在緩衝區中,按下回車鍵該緩衝區中的內容才對程式可用。——ansi 標準規定都要緩衝。

當然,非緩衝與緩衝各有它們的用途。

檔案結尾:eof  

從鍵盤模擬檔案結尾的方法: ibm pc及其相容機  ctrl+z  , unix 使用 ctrl+d

重定向的概念:

令程式與檔案一同工作有兩種方式。

ⅰ: 明確的開啟檔案,讀檔案,寫檔案,關閉檔案。

ⅱ: 把資料流重新分配,讓它關聯到檔案。我們後面的讀寫按照標準的i/o進行,而不關心資料流是從何處獲取的。

第二種稱為重定向技術。比起第一種方法在一些方面功能有限,但更容易使用。

最大的問題在於,重定向是由作業系統管理實現,而不是c語言,所以無法移植,且不同的作業系統有不同的實現方式。

unix及linux的輸入重定向運算子  < ,資料流本來應該來自鍵盤,使用 程式 <  text後,資料流讀取text文字檔案。

輸出重定向 >  , 資料流本來應該顯示到螢幕,使用 程式 >  text後,資料流被寫入text文字檔案。

必須對c語言處理輸入的工作方式有乙個清晰的理解: 表面上看去輸入的是各種字元,字串,數字等等,實際上是乙個乙個的位元組流,包括肉眼不容易注意的空格字元,以及根本看不出來的回車換行,製表字元。

輸入的確認可能是**中最複雜的部分,因為要預見程式可能遇到的使用者錯誤行為,並進行適當處理。

ubuntu中輸入漢字,scanf利用字串也可以儲存,乙個漢字佔3個位元組。

總結: 處理混合輸入用scanf,單字元的getchar,文字行的gets,檔案用fgets

處理混合輸出用printf, 單字元的putchar, 文字行的puts,檔案用fputs

特別sprintf也是處理混合輸出,但不是顯示在螢幕,而是寫進字串裡——把數值轉成字串。

stdlib.h提供了atoi, atof ,atol——把字串轉成數值。(功能上scanf也可以,但需要鍵盤輸入)

為了處理字串,c語言提供了string.h眾多函式;為了處理單字元,c語言提供了ctype.h眾多函式。

第11章 執行緒

執行緒標識 就像每個程序有乙個程序id一樣,每個執行緒也有乙個執行緒id。程序id在整個系統中是唯一的,但執行緒id不同,執行緒id只有在它所屬的程序上下文中才有意義。程序id 用pid t資料型別表示 執行緒id用pthread t資料型別來表示 includeint pthread equal ...

第11章 執行緒

1.執行緒的作用 1 對於程式設計而言 當我們的乙個程序在某一時刻,需要做的事件不止一件的時候,一般有兩種方法。一種是採用非同步程式設計的模式,一種是採用多執行緒同步模式。但是多執行緒同步模式遠遠比非同步模式要方便的多。但是對於單核系統,往往非同步程式設計模式效率更高。2 對於互動程式,一般都是要多...

第11章 函式

1 把相關的語句組合在一起,並且賦予相應的名稱,用這種方法來給程式分塊,這種形式的組合就是函式,函式也叫例程或者過程。程式總是從 main 函式開始啟動。函式由函式名 引數 返回值型別以及一組包含操作語句的語句塊組成。函式可以支援過載,程式就是由函式組成。2 形參是函式定義時在形參表中定義的,並且由...