国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
C語言基礎(chǔ):你知道嗎,對于C語言來說我們的顯示器只是一個(gè)文件
最近,我們已經(jīng)將C語言基礎(chǔ)的知識(shí)點(diǎn)已經(jīng)將的差不多了,今天說一個(gè)有趣的事情:相信對于現(xiàn)在的我們,文件是什么我們都已經(jīng)非常清楚了,比如一些常見的txt文件,Word文檔,還有我們寫的代碼所在的文件等,電腦中很常見,但是在C語言中,你知道文件是什么嗎。



C語言學(xué)習(xí)

實(shí)際上,在操作系統(tǒng)初期,有各種各樣的硬件設(shè)備,但是這些硬件設(shè)備的接口各不相同,所以為了計(jì)算機(jī)能夠?qū)@些硬件設(shè)備操作,于是就把這些不同的硬件接口進(jìn)行簡化和統(tǒng)一化,說簡單點(diǎn),就是把它們看做一個(gè)個(gè)磁盤上的文件,然后對這些文件進(jìn)行操作。比如顯示器,顯示器上的文件并不是真實(shí)存在顯示器上的,而是在主機(jī)中的,而顯示器自己就被當(dāng)做一個(gè)文件,當(dāng)我們輸出數(shù)據(jù)的時(shí)候,主機(jī)就將信息輸出到文件中,也就是顯示器中。所以說,我們可以將顯示器稱為標(biāo)準(zhǔn)輸出設(shè)備。

在C語言中,也是這個(gè)原理,C語言默認(rèn)將scanf輸入對應(yīng)到了鍵盤上,printf對應(yīng)到了顯示器上。既然有默認(rèn),那么自然可以修改,不過更改起來有點(diǎn)麻煩,我們后面時(shí)間可以具體聊聊。

聊完C語言中這個(gè)特殊的文件,我們進(jìn)入真正的文件操作,無論什么樣的文件,我們一定要記住一點(diǎn),所有文件的操作步驟都是三步,打開文件-》操作文件-》然后關(guān)閉文件,文件本身是具有很多屬性的,所以C語言在打開文件操作的時(shí)候,會(huì)將這些文件信息一一對應(yīng)到FIFE類型的結(jié)構(gòu)體變量中(不知道結(jié)構(gòu)體變量的可以看我上期寫的內(nèi)容),然后我們對文件的操作,輸入輸出都將會(huì)先儲(chǔ)存在緩存中,當(dāng)我們在關(guān)閉文件時(shí),就需要將緩存中的數(shù)據(jù)取出來保存到內(nèi)存中去,或者直接清空緩存,然后釋放FIFE類型的結(jié)構(gòu)體變量占用的內(nèi)存空間,最后禁止繼續(xù)對文件的操作。



文件使用流程

從上面整個(gè)流程我們可以看到,文件的打開和關(guān)閉對于文件的操作有著至關(guān)作用,所以我們在其他語言中,不論老師還是書中都會(huì)特別囑咐,打開的文件一定要及時(shí)關(guān)閉,原因從上面就可以找到,打開狀態(tài)的文件是持續(xù)占用內(nèi)存和緩存的,當(dāng)我們不關(guān)閉文件,那么打開的文件多了,自然就會(huì)將緩存占滿,內(nèi)存占滿,這也就是為什么我們生活中使用Word文檔時(shí),文件過大會(huì)導(dǎo)致奔潰的原因之一。也是我們在存取數(shù)據(jù)庫時(shí),打開一個(gè)數(shù)據(jù)庫,或者打開多個(gè)數(shù)據(jù)庫不關(guān)閉就會(huì)導(dǎo)致數(shù)據(jù)讀取速度變慢的原因之一,所以切記有開有關(guān),才能讓軟件的性能更上一層樓(malloch和free不也是這個(gè)道理嗎)。

當(dāng)然,緩存是非常有限的,而且我們在運(yùn)行軟件的時(shí)候總要對這些文件進(jìn)行操作,那么如果全部進(jìn)行操作,我們現(xiàn)有的這些內(nèi)存明顯是不夠的,尤其是我們在玩游戲時(shí),部分游戲80多G,不可能將所有資源全部加載進(jìn)來,所以這時(shí)候,系統(tǒng)就給我們解決了這個(gè)問題,那就是我們常說的虛擬內(nèi)存,虛擬內(nèi)存的原理很簡單,就是將不用的塞回去,將使用的從因硬盤中復(fù)制到內(nèi)存中,讓CPU進(jìn)行處理,當(dāng)然硬盤讀寫比較慢,數(shù)據(jù)來回交換也是很消耗時(shí)間的,而且要是都發(fā)生在一個(gè)時(shí)間點(diǎn)上,是不是就將整個(gè)CPU阻塞了,這就是我們常說的卡住了。



回到主題,我們文件的操作實(shí)際上就是把文件復(fù)制到內(nèi)存中處理或者內(nèi)存中獲取數(shù)據(jù)保存到磁盤中,而它們之間傳遞信息。我們一般稱作文件流。是不是很形象,從一個(gè)地方像水一樣流向另一個(gè)地方,而且我們把文件到內(nèi)存叫做輸入流,反之稱為輸出流。不知道聽說過IO沒,它就是input和output的縮寫。

正常情況下,就是不把顯示器當(dāng)做文件的情況下,我們將文件分為兩種類型,一種是二進(jìn)制文件,另一種是文本文件。這里有一點(diǎn)要注意的,實(shí)際上就計(jì)算機(jī)而言,它們都是以二進(jìn)制的形式進(jìn)行儲(chǔ)存的,所以分類只是針對我們?nèi)祟惗?。雖然都是二進(jìn)制,但是計(jì)算機(jī)要將這兩種類型表現(xiàn)出來,自然就要加上一些東西來區(qū)別。所以二進(jìn)制類型的文件就有了文件頭,用文件頭來表示文件的大小,類型信息,而文本文件就沒有文頭。而且編碼格式上區(qū)別也比較大,文本文件是基于字符編碼的,比如我們常用的一些ASCII,uft8等,二進(jìn)制是自定義的編碼,可以選擇三個(gè)字節(jié),兩個(gè)字節(jié)等,雖然它們都可以顯示,但是我們平常看到二進(jìn)制時(shí),都是一串串亂碼。



緩存不夠

在我們使用電腦過程中,使用最多的還是文件,不同類型的文件,但是它們的原理都是我們上面所說,輸入的信息是先進(jìn)入緩存中的,我又說過緩存很小,尤其是還要進(jìn)行分配,那么我們輸入的東西太多了,豈不是緩存自動(dòng)清空了,所以在學(xué)了文件流后,我就可以告訴大家,緩存快滿了,數(shù)據(jù)會(huì)被存放到文件流中,最后才會(huì)進(jìn)行處理或儲(chǔ)存。

結(jié)語:這期我們講了一些關(guān)于文件的知識(shí)點(diǎn),尤其是我們的顯示器也是一個(gè)文件,是不是讓我們點(diǎn)驚訝。計(jì)算機(jī)的世界里,還有很的神秘的地方,只不過我們知道的是滄海一簇,所以在學(xué)習(xí)的過程中,不要急,要帶著問題來學(xué)習(xí),更加深入了解問題的所在。

最后,謝謝閱讀。

學(xué)習(xí)編程的你,是男孩子還是女孩子 (單選)
投票 C語言基礎(chǔ):你知道嗎,對于C語言來說,我們的顯示器只是一個(gè)文件

 
小黃雞軟件
前天 14:41 · 科技領(lǐng)域創(chuàng)作者
最近,我們已經(jīng)將C語言基礎(chǔ)的知識(shí)點(diǎn)已經(jīng)將的差不多了,今天說一個(gè)有趣的事情:相信對于現(xiàn)在的我們,文件是什么我們都已經(jīng)非常清楚了,比如一些常見的txt文件,Word文檔,還有我們寫的代碼所在的文件等,電腦中很常見,但是在C語言中,你知道文件是什么嗎。



C語言學(xué)習(xí)

實(shí)際上,在操作系統(tǒng)初期,有各種各樣的硬件設(shè)備,但是這些硬件設(shè)備的接口各不相同,所以為了計(jì)算機(jī)能夠?qū)@些硬件設(shè)備操作,于是就把這些不同的硬件接口進(jìn)行簡化和統(tǒng)一化,說簡單點(diǎn),就是把它們看做一個(gè)個(gè)磁盤上的文件,然后對這些文件進(jìn)行操作。比如顯示器,顯示器上的文件并不是真實(shí)存在顯示器上的,而是在主機(jī)中的,而顯示器自己就被當(dāng)做一個(gè)文件,當(dāng)我們輸出數(shù)據(jù)的時(shí)候,主機(jī)就將信息輸出到文件中,也就是顯示器中。所以說,我們可以將顯示器稱為標(biāo)準(zhǔn)輸出設(shè)備。

在C語言中,也是這個(gè)原理,C語言默認(rèn)將scanf輸入對應(yīng)到了鍵盤上,printf對應(yīng)到了顯示器上。既然有默認(rèn),那么自然可以修改,不過更改起來有點(diǎn)麻煩,我們后面時(shí)間可以具體聊聊。

聊完C語言中這個(gè)特殊的文件,我們進(jìn)入真正的文件操作,無論什么樣的文件,我們一定要記住一點(diǎn),所有文件的操作步驟都是三步,打開文件-》操作文件-》然后關(guān)閉文件,文件本身是具有很多屬性的,所以C語言在打開文件操作的時(shí)候,會(huì)將這些文件信息一一對應(yīng)到FIFE類型的結(jié)構(gòu)體變量中(不知道結(jié)構(gòu)體變量的可以看我上期寫的內(nèi)容),然后我們對文件的操作,輸入輸出都將會(huì)先儲(chǔ)存在緩存中,當(dāng)我們在關(guān)閉文件時(shí),就需要將緩存中的數(shù)據(jù)取出來保存到內(nèi)存中去,或者直接清空緩存,然后釋放FIFE類型的結(jié)構(gòu)體變量占用的內(nèi)存空間,最后禁止繼續(xù)對文件的操作。



文件使用流程

從上面整個(gè)流程我們可以看到,文件的打開和關(guān)閉對于文件的操作有著至關(guān)作用,所以我們在其他語言中,不論老師還是書中都會(huì)特別囑咐,打開的文件一定要及時(shí)關(guān)閉,原因從上面就可以找到,打開狀態(tài)的文件是持續(xù)占用內(nèi)存和緩存的,當(dāng)我們不關(guān)閉文件,那么打開的文件多了,自然就會(huì)將緩存占滿,內(nèi)存占滿,這也就是為什么我們生活中使用Word文檔時(shí),文件過大會(huì)導(dǎo)致奔潰的原因之一。也是我們在存取數(shù)據(jù)庫時(shí),打開一個(gè)數(shù)據(jù)庫,或者打開多個(gè)數(shù)據(jù)庫不關(guān)閉就會(huì)導(dǎo)致數(shù)據(jù)讀取速度變慢的原因之一,所以切記有開有關(guān),才能讓軟件的性能更上一層樓(malloch和free不也是這個(gè)道理嗎)。

當(dāng)然,緩存是非常有限的,而且我們在運(yùn)行軟件的時(shí)候總要對這些文件進(jìn)行操作,那么如果全部進(jìn)行操作,我們現(xiàn)有的這些內(nèi)存明顯是不夠的,尤其是我們在玩游戲時(shí),部分游戲80多G,不可能將所有資源全部加載進(jìn)來,所以這時(shí)候,系統(tǒng)就給我們解決了這個(gè)問題,那就是我們常說的虛擬內(nèi)存,虛擬內(nèi)存的原理很簡單,就是將不用的塞回去,將使用的從因硬盤中復(fù)制到內(nèi)存中,讓CPU進(jìn)行處理,當(dāng)然硬盤讀寫比較慢,數(shù)據(jù)來回交換也是很消耗時(shí)間的,而且要是都發(fā)生在一個(gè)時(shí)間點(diǎn)上,是不是就將整個(gè)CPU阻塞了,這就是我們常說的卡住了。



回到主題,我們文件的操作實(shí)際上就是把文件復(fù)制到內(nèi)存中處理或者內(nèi)存中獲取數(shù)據(jù)保存到磁盤中,而它們之間傳遞信息。我們一般稱作文件流。是不是很形象,從一個(gè)地方像水一樣流向另一個(gè)地方,而且我們把文件到內(nèi)存叫做輸入流,反之稱為輸出流。不知道聽說過IO沒,它就是input和output的縮寫。

正常情況下,就是不把顯示器當(dāng)做文件的情況下,我們將文件分為兩種類型,一種是二進(jìn)制文件,另一種是文本文件。這里有一點(diǎn)要注意的,實(shí)際上就計(jì)算機(jī)而言,它們都是以二進(jìn)制的形式進(jìn)行儲(chǔ)存的,所以分類只是針對我們?nèi)祟惗浴km然都是二進(jìn)制,但是計(jì)算機(jī)要將這兩種類型表現(xiàn)出來,自然就要加上一些東西來區(qū)別。所以二進(jìn)制類型的文件就有了文件頭,用文件頭來表示文件的大小,類型信息,而文本文件就沒有文頭。而且編碼格式上區(qū)別也比較大,文本文件是基于字符編碼的,比如我們常用的一些ASCII,uft8等,二進(jìn)制是自定義的編碼,可以選擇三個(gè)字節(jié),兩個(gè)字節(jié)等,雖然它們都可以顯示,但是我們平??吹蕉M(jìn)制時(shí),都是一串串亂碼。



緩存不夠

在我們使用電腦過程中,使用最多的還是文件,不同類型的文件,但是它們的原理都是我們上面所說,輸入的信息是先進(jìn)入緩存中的,我又說過緩存很小,尤其是還要進(jìn)行分配,那么我們輸入的東西太多了,豈不是緩存自動(dòng)清空了,所以在學(xué)了文件流后,我就可以告訴大家,緩存快滿了,數(shù)據(jù)會(huì)被存放到文件流中,最后才會(huì)進(jìn)行處理或儲(chǔ)存。

結(jié)語:這期我們講了一些關(guān)于文件的知識(shí)點(diǎn),尤其是我們的顯示器也是一個(gè)文件,是不是讓我們點(diǎn)驚訝。計(jì)算機(jī)的世界里,還有很的神秘的地方,只不過我們知道的是滄海一簇,所以在學(xué)習(xí)的過程中,不要急,要帶著問題來學(xué)習(xí),更加深入了解問題的所在。

最后,謝謝閱讀。
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
敖丙帶你看Redis數(shù)據(jù)結(jié)構(gòu)底層系列-SDS
當(dāng)嵌入式硬件工程師感覺很高大上,這些面試題看了有點(diǎn)懵
C語言基礎(chǔ)之文件操作基本常識(shí)
對C語言輸入輸出流的深入理解
《C專家編程》學(xué)習(xí)筆記
你是否真的懂?dāng)?shù)組?
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服