天天看點

C語言基礎:你知道嗎,對于C語言來說,我們的顯示器隻是一個檔案

最近,我們已經将C語言基礎的知識點已經将的差不多了,今天說一個有趣的事情:相信對于現在的我們,檔案是什麼我們都已經非常清楚了,比如一些常見的txt檔案,Word文檔,還有我們寫的代碼所在的檔案等,電腦中很常見,但是在C語言中,你知道檔案是什麼嗎。

C語言基礎:你知道嗎,對于C語言來說,我們的顯示器隻是一個檔案

C語言基礎:你知道嗎,對于C語言來說,我們的顯示器隻是一個檔案

C語言學習

實際上,在作業系統初期,有各種各樣的硬體裝置,但是這些硬體裝置的接口各不相同,是以為了計算機能夠對這些硬體裝置操作,于是就把這些不同的硬體接口進行簡化和統一化,說簡單點,就是把它們看做一個個磁盤上的檔案,然後對這些檔案進行操作。比如顯示器,顯示器上的檔案并不是真實存在顯示器上的,而是在主機中的,而顯示器自己就被當做一個檔案,當我們輸出資料的時候,主機就将資訊輸出到檔案中,也就是顯示器中。是以說,我們可以将顯示器稱為标準輸出裝置。

在C語言中,也是這個原理,C語言預設将scanf輸入對應到了鍵盤上,printf對應到了顯示器上。既然有預設,那麼自然可以修改,不過更改起來有點麻煩,我們後面時間可以具體聊聊。

聊完C語言中這個特殊的檔案,我們進入真正的檔案操作,無論什麼樣的檔案,我們一定要記住一點,所有檔案的操作步驟都是三步,打開檔案-》操作檔案-》然後關閉檔案,檔案本身是具有很多屬性的,是以C語言在打開檔案操作的時候,會将這些檔案資訊一一對應到FIFE類型的結構體變量中(不知道結構體變量的可以看我上期寫的内容),然後我們對檔案的操作,輸入輸出都将會先儲存在緩存中,當我們在關閉檔案時,就需要将緩存中的資料取出來儲存到記憶體中去,或者直接清空緩存,然後釋放FIFE類型的結構體變量占用的記憶體空間,最後禁止繼續對檔案的操作。

C語言基礎:你知道嗎,對于C語言來說,我們的顯示器隻是一個檔案

*關于怎麼快速學C/C++,可以加下小編的C/C++學習企鵝群:【870+963+251】不管你是小白還是大牛,小編我都歡迎,不定期分享幹貨,歡迎初學和進階中的小夥伴。

每天晚上20:00都會開直播給大家分享C/C++遊戲程式設計學習知識和路線方法,群裡會不定期更新最新的教程和學習方法,最後祝所有程式員都能夠走上人生巅峰,讓代碼将夢想照進現實**

檔案使用流程

從上面整個流程我們可以看到,檔案的打開和關閉對于檔案的操作有着至關作用,是以我們在其他語言中,不論老師還是書中都會特别囑咐,打開的檔案一定要及時關閉,原因從上面就可以找到,打開狀态的檔案是持續占用記憶體和緩存的,當我們不關閉檔案,那麼打開的檔案多了,自然就會将緩存占滿,記憶體占滿,這也就是為什麼我們生活中使用Word文檔時,檔案過大會導緻奔潰的原因之一。也是我們在存取資料庫時,打開一個資料庫,或者打開多個資料庫不關閉就會導緻資料讀取速度變慢的原因之一,是以切記有開有關,才能讓軟體的性能更上一層樓(malloch和free不也是這個道理嗎)。

當然,緩存是非常有限的,而且我們在運作軟體的時候總要對這些檔案進行操作,那麼如果全部進行操作,我們現有的這些記憶體明顯是不夠的,尤其是我們在玩遊戲時,部分遊戲80多G,不可能将所有資源全部加載進來,是以這時候,系統就給我們解決了這個問題,那就是我們常說的虛拟記憶體,虛拟記憶體的原理很簡單,就是将不用的塞回去,将使用的從因硬碟中複制到記憶體中,讓CPU進行處理,當然硬碟讀寫比較慢,資料來回交換也是很消耗時間的,而且要是都發生在一個時間點上,是不是就将整個CPU阻塞了,這就是我們常說的卡住了。

回到主題,我們檔案的操作實際上就是把檔案複制到記憶體中處理或者記憶體中擷取資料儲存到磁盤中,而它們之間傳遞資訊。我們一般稱作檔案流。是不是很形象,從一個地方像水一樣流向另一個地方,而且我們把檔案到記憶體叫做輸入流,反之稱為輸出流。不知道聽說過IO沒,它就是input和output的縮寫。

正常情況下,就是不把顯示器當做檔案的情況下,我們将檔案分為兩種類型,一種是二進制檔案,另一種是文本檔案。這裡有一點要注意的,實際上就計算機而言,它們都是以二進制的形式進行儲存的,是以分類隻是針對我們人類而言。雖然都是二進制,但是計算機要将這兩種類型表現出來,自然就要加上一些東西來差別。是以二進制類型的檔案就有了檔案頭,用檔案頭來表示檔案的大小,類型資訊,而文本檔案就沒有文頭。而且編碼格式上差別也比較大,文本檔案是基于字元編碼的,比如我們常用的一些ASCII,uft8等,二進制是自定義的編碼,可以選擇三個位元組,兩個位元組等,雖然它們都可以顯示,但是我們平常看到二進制時,都是一串串亂碼。

C語言基礎:你知道嗎,對于C語言來說,我們的顯示器隻是一個檔案

緩存不夠

在我們使用電腦過程中,使用最多的還是檔案,不同類型的檔案,但是它們的原理都是我們上面所說,輸入的資訊是先進入緩存中的,我又說過緩存很小,尤其是還要進行配置設定,那麼我們輸入的東西太多了,豈不是緩存自動清空了,是以在學了檔案流後,我就可以告訴大家,緩存快滿了,資料會被存放到檔案流中,最後才會進行處理或儲存。

結語:這期我們講了一些關于檔案的知識點,尤其是我們的顯示器也是一個檔案,是不是讓我們點驚訝。計算機的世界裡,還有很的神秘的地方,隻不過我們知道的是滄海一簇,是以在學習的過程中,不要急,要帶着問題來學習,更加深入了解問題的所在。

最後,謝謝閱讀。

繼續閱讀