C語(yǔ)言探索之旅 | 第一部分第四課:變量的世界(一),內(nèi)存那檔事

作者 謝恩銘,公眾號(hào)「程序員聯(lián)盟」(微信號(hào):coderhub)。
轉(zhuǎn)載請(qǐng)注明出處。
原文:http://www.lxweimin.com/p/e2954324e76d

《C語(yǔ)言探索之旅》全系列

內(nèi)容簡(jiǎn)介


  1. 前言
  2. 不同類型的存儲(chǔ)器
  3. 內(nèi)存
  4. 第一部分第五課預(yù)告

1. 前言


經(jīng)過(guò)上一課 C語(yǔ)言探索之旅 | 第一部分第三課:你的第一個(gè)程序 ,我們已經(jīng)知道怎么在屏幕上顯示文字了。

暫時(shí)我們也就只能做這么多了。而這是正常的,因?yàn)槲覀冞€沒學(xué)習(xí)很重要的編程知識(shí):變量

變量相關(guān)的知識(shí)點(diǎn)比較多,我們會(huì)分為幾課來(lái)學(xué)習(xí):

  • 內(nèi)存那檔事;
  • 聲明變量;
  • 顯示變量?jī)?nèi)容和提取輸入內(nèi)容。

這一課我們學(xué)習(xí)電腦內(nèi)存的知識(shí)。

每一個(gè)正常人都有記憶,我們的老朋友電腦也不例外,只不過(guò)它比我們“厲害”,它的記憶(存儲(chǔ)器)有好幾種。

為什么電腦要有好幾種存儲(chǔ)器呢?單單一種還不夠嗎?

不夠:主要問(wèn)題是我們想要電腦有一個(gè)既快捷(能夠很快提取信息)又容量大(能夠存儲(chǔ)很多數(shù)據(jù))的存儲(chǔ)器。

然而,你會(huì)啞然失笑,因?yàn)槟壳拔覀冞€沒有一種兼具快捷和大容量?jī)煞N特性的存儲(chǔ)器。更準(zhǔn)確地說(shuō),高速存儲(chǔ)器太貴,所以容量只能低一點(diǎn)。

因此,我們只能給電腦配備:

  • 或者是很高速但是低容量的存儲(chǔ)器;
  • 或者是大容量但是低速的存儲(chǔ)器。

2. 不同類型的存儲(chǔ)器


以下列出電腦的存儲(chǔ)器類型,從速度最快到速度最慢排序:

  1. 寄存器(Register):位于處理器(Processor)上,存取速度非常快(因?yàn)椤敖畼桥_(tái)先得月”)。

  2. 高速緩存(Cache):用于鏈接寄存器和內(nèi)存。

  3. 內(nèi)存(Memory):這是我們編程時(shí)最常打交道的存儲(chǔ)器,也是平時(shí)我們買電腦時(shí)很關(guān)心的數(shù)據(jù)之一。

  4. 硬盤(Hard Disk):你肯定不陌生,就是平時(shí) Windows 電腦里的 C 盤,D 盤之類的(當(dāng)然還有很多其他類型的硬盤,比如 U 盤,EEPROM,等),我們?cè)诶锩娲鎯?chǔ)文件,照片,視頻,等。

正如上面所說(shuō),我們這里把存儲(chǔ)器從最快(寄存器)到最慢(硬盤)做了分類。你應(yīng)該可以推斷出寄存器相比硬盤來(lái)說(shuō),容量要小很多。

寄存器只能存儲(chǔ)少量的數(shù)據(jù),而硬盤則可以存儲(chǔ)大量的數(shù)據(jù)。

當(dāng)我們說(shuō)一個(gè)存儲(chǔ)器慢的時(shí)候,其實(shí)是相對(duì)電腦的處理速度而言的。

讀取硬盤大概要耗費(fèi) 8 毫秒,對(duì)于一臺(tái)電腦來(lái)說(shuō)那已經(jīng)很慢了(現(xiàn)在普通的家用電腦的運(yùn)算速度都已經(jīng)可以達(dá)到每秒幾十億次了,1 GHz 對(duì)應(yīng)每秒 10 億次;如果你的電腦主頻是 2.5 GHz,那運(yùn)算速度就是每秒 25 億次;現(xiàn)在家用的雙核電腦通常都能達(dá)到每秒 50 億次運(yùn)算(5 GHz)左右的水平)。

上面所說(shuō)的內(nèi)容,我們需要掌握什么呢?

事實(shí)上,只需要關(guān)心一部分就夠了。要知道在編程時(shí),我們基本上只和內(nèi)存打交道。我們?cè)谥蟮恼n程中也會(huì)學(xué)習(xí)如何讀寫硬盤,在硬盤上創(chuàng)建文件。至于寄存器和高速緩存,我們基本不關(guān)心,這是電腦的事。

當(dāng)然,在一些很底層的語(yǔ)言中,比如匯編語(yǔ)言(Assembly,簡(jiǎn)稱 ASM),我們經(jīng)常會(huì)用到寄存器。

我以前學(xué)生時(shí)代跟著王爽老師的《匯編語(yǔ)言》第二版學(xué)習(xí)了匯編,那本書寫得挺好。

但是我想說(shuō)的是,用匯編哪怕只是做個(gè)乘法,也是很不容易的。幸運(yùn)的是,在 C語(yǔ)言(或其他大部分語(yǔ)言)中做乘法很簡(jiǎn)單。

還要記住一個(gè)很重要的知識(shí)點(diǎn):上述四種存儲(chǔ)器類型中,只有硬盤是可以永久保存數(shù)據(jù)的。其他的存儲(chǔ)器(寄存器,高速緩存,內(nèi)存)都是暫時(shí)性的存儲(chǔ)器:當(dāng)你關(guān)閉電腦時(shí),這些存儲(chǔ)器會(huì)被清空。

幸好,當(dāng)你重新開啟電腦時(shí),硬盤里的數(shù)據(jù)始終存在,所以你的電腦還知道自己姓甚名誰(shuí)。

3. 內(nèi)存


既然我們以后的大部分時(shí)間都要跟內(nèi)存打交道,那豈能不來(lái)認(rèn)識(shí)認(rèn)識(shí)這位朋友呢?

我們用變焦鏡頭的形式慢慢道來(lái)。

一開始看到的是我們的電腦工作環(huán)境的整體圖片:

電腦工作環(huán)境

上圖中的鼠標(biāo),鍵盤,顯示屏,你應(yīng)該都不陌生吧,還有右邊那個(gè)大家伙:主機(jī)箱

我們關(guān)心的是主機(jī)箱,因?yàn)槲覀兊膬?nèi)存在這里面。

主機(jī)箱

當(dāng)然,我們的硬盤,寄存器和高度緩存也都在這個(gè)主機(jī)箱里。

我們來(lái)開蓋看看里面的內(nèi)容吧:

主機(jī)箱內(nèi)部

看上去有點(diǎn)凌亂,不過(guò)不用擔(dān)心,我們并不需要知道各部分的功能,我們只需要關(guān)心我們這一章的主角:內(nèi)存

它在哪呢?聰明如你可能已經(jīng)發(fā)現(xiàn)了,我用紅色框標(biāo)識(shí)的那個(gè)區(qū)域就是內(nèi)存所在。

我并沒有標(biāo)出其他兩種存儲(chǔ)器:高速緩存和寄存器,因?yàn)樗鼈儗?shí)在太小了,不容易看到。

下圖就是內(nèi)存條的樣子:

內(nèi)存條

內(nèi)存也經(jīng)常被稱為 RAM,是 Random Access Memory(隨機(jī)存取存儲(chǔ)器)的縮寫。所以之后的課程我們有時(shí)也會(huì)用 RAM 來(lái)稱呼內(nèi)存。

內(nèi)存圖示


從外觀上,即使我們用顯微鏡來(lái)看內(nèi)存條,也看不出個(gè)所以然來(lái)。我們關(guān)心的是它內(nèi)部的運(yùn)作機(jī)制。

下面是一張內(nèi)存機(jī)制的圖示:

內(nèi)存機(jī)制

很精簡(jiǎn)是吧,因?yàn)槲覀儾恍枰捞嗉?xì)節(jié)。不然我們可能會(huì)被告知:“你,你知道得太多了”。然后… 就沒有然后了...

如果你能了解清楚上圖,暫時(shí)也已經(jīng)足夠了。

如你所見,上圖中我們關(guān)心兩列:

  • 左邊一列是地址: 內(nèi)存地址是一個(gè)數(shù),能夠讓電腦在內(nèi)存里定位, 地址從 0 開始,到 3448765900126 結(jié)束。這里只是舉個(gè)例子,我并不知道這個(gè)內(nèi)存里有多少地址(不一定是到 3448765900126 結(jié)束),每個(gè)內(nèi)存條的容量是不同的。一般來(lái)說(shuō),內(nèi)存條容量越大,地址數(shù)就越多,儲(chǔ)存的信息也越多。

  • 右邊一列是值(數(shù)字): 每一個(gè)內(nèi)存地址都儲(chǔ)存一個(gè)數(shù)值,以便電腦之后使用,而且每個(gè)地址只能存儲(chǔ)一個(gè)值。

我們的內(nèi)存只能存儲(chǔ)數(shù)字。

那你要問(wèn)了,內(nèi)存里怎么存儲(chǔ)一個(gè)英語(yǔ)單詞呢?

好問(wèn)題。事實(shí)上,對(duì)于電腦來(lái)說(shuō),字母也是以數(shù)字的形式呈現(xiàn)。一句話就是一連串的數(shù)字。

有一張表儲(chǔ)存了數(shù)字和字母的對(duì)應(yīng)關(guān)系,這張表被稱為“ASCII 碼表”。舉個(gè)例子,數(shù)字 67 對(duì)應(yīng)大寫的字母 C。

我們暫時(shí)不深究 ASCII 碼表,之后的課程會(huì)再次提到。

所以上圖其實(shí)不難理解,如果我們要在內(nèi)存中儲(chǔ)存一個(gè)數(shù),比如 5,內(nèi)存會(huì)看看哪個(gè)地址是可用的,然后在里面(比如地址 35487412)儲(chǔ)存 5;之后內(nèi)存再要取這個(gè)數(shù)值的時(shí)候,就直接去訪問(wèn) 35487412 這個(gè)地址,得到里面的數(shù),是 5。

大體上內(nèi)存的機(jī)制就是這樣,暫時(shí)還是有點(diǎn)模糊的,但在之后的章節(jié),會(huì)越來(lái)越清晰,我向你保證。

4. 第一部分第五課預(yù)告


今天的課就到這里,一起加油吧!

下一課:C語(yǔ)言探索之旅 | 第一部分第五課:變量的世界(二),變量聲明

下一課我們繼續(xù)探尋 C語(yǔ)言變量的奇幻世界。


我是 謝恩銘,公眾號(hào)「程序員聯(lián)盟」(微信號(hào):coderhub)運(yùn)營(yíng)者,慕課網(wǎng)精英講師 Oscar 老師,終生學(xué)習(xí)者。
熱愛生活,喜歡游泳,略懂烹飪。
人生格言:「向著標(biāo)桿直跑」

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,461評(píng)論 6 532
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,538評(píng)論 3 417
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,423評(píng)論 0 375
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,991評(píng)論 1 312
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,761評(píng)論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,207評(píng)論 1 324
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,268評(píng)論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,419評(píng)論 0 288
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,959評(píng)論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,782評(píng)論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,983評(píng)論 1 369
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,528評(píng)論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,222評(píng)論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,653評(píng)論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,901評(píng)論 1 286
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,678評(píng)論 3 392
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,978評(píng)論 2 374

推薦閱讀更多精彩內(nèi)容