緩衝區的理解

2021-06-03 16:14:41 字數 704 閱讀 3179

這裡所說的緩衝區指的是為標準輸入與標準輸出設定的緩衝區,為什麼要設定乙個標準輸入緩衝區主要是從效率上來考慮的,如果不設緩衝區會降低cpu的效率,因為它總是會在使用者輸入之後馬上會去執行某些指令,導致多次io開銷!同樣設定乙個標準輸出緩衝區是為了解決列印的問題!總之這樣做的目的就是為了效率!比如如果沒有緩衝區,輸入乙個回顯程式:

while((ch=getchar())!='#')

putchar(ch);

輸入abc[enter],顯示在顯示器上的實際字元為aabbcc,這是因為沒有緩衝區,輸入的a會馬上輸入給程序,因此馬上回顯,但是如果設定緩衝區,那麼顯示為abc[enter]  abc,因為abc在輸入時並沒有直接送到程序中,而是放在緩衝區中,當鍵入enter時重新整理緩衝區(行緩衝區只有在鍵入enter時才會重新整理),重新整理的意思就是此時緩衝區的資料全部輸送給程序,因此abc會在鍵入enter之後才回顯,本來的3次io開銷變成了1次io開銷,提高了效率。當然列印時的輸出緩衝區也是起這樣的作用。

緩衝區不但可以提高效率還可以在輸入有錯時,修改自己的輸入。

一些互動性的程式需要非緩衝輸入,例如在遊戲中,希望一按下鍵就馬上執行某個指令,因此是否採用緩衝區取決於該程式的用途。

緩衝區分為完全緩衝和行緩衝,完全緩衝是在緩衝區滿的時候自動被清空(內容發至其目的地),這種型別的緩衝通常出現在檔案輸入中。而對於行緩衝來說,遇到第乙個換行字元時將清空緩衝區,鍵盤的輸入是標準的行緩衝,因此按下回車鍵將重新整理緩衝區。

緩衝區理解

在講緩衝區之前,我們要先介紹下記憶體的作用。記憶體是計算機中重要的部件之一,它是與cpu進行溝通的橋梁。計算機中所有程式的執行都是在記憶體中進行的,其作用是用於暫時存放cpu中的運算資料,以及與硬碟等外部儲存器交換的資料。也就是說 只要計算機在執行中,cpu就會把需要運算的資料調到記憶體中進行運算,...

緩衝區的個人理解

緩衝區的個人理解 這裡所說的緩衝區指的是為標準輸入與標準輸出設定的緩衝區,為什麼要設定乙個標準輸入緩衝區主要是從效率上來考慮的,如果不設緩衝區會降低cpu 的效率,因為它總是會等待使用者輸入完之後才會去執行某些指令!同樣設定乙個標準輸出緩衝區是為了解決列印的問題!總之這樣做的目的就是為了效率!接下來...

C 緩衝區的理解

下面介紹緩衝區的知識。一 什麼是緩衝區 緩衝區又稱為快取,它是記憶體空間的一部分。也就是說,在記憶體空間中預留了一定的儲存空間,這些儲存空間用來緩衝輸入或輸出的資料,這部分預留的空間就叫做緩衝區。緩衝區根據其對應的是輸入裝置還是輸出裝置,分為輸入緩衝區和輸出緩衝區。二 為什麼要引入緩衝區 我們為什麼...