
非常規(guī)入門C語言:4、地址與指針|當前報道
在上一章中,眾多基本數(shù)據(jù)類型與基本數(shù)據(jù)結(jié)構,我們惟未談及地址。就是以下這個表格:
下表通用64位計算機中的為無符號數(shù)據(jù)類型(中括號意為可省略)
(資料圖)
首先,我們要注意到,地址是屬于無符號數(shù)據(jù)類型的,而且還有一個限制:這個表格的適用平臺是“通用64位計算機”。
當然了,現(xiàn)在誰還在用32位的系統(tǒng)和32位的CPU呀!火車站?政府辦公室?
下面,我們就談談地址這個調(diào)皮鬼,并且說說,指針到底是個啥!
每一個人都會有一個屬于自己的名字。但是在一些特殊的地方,人非常多,還可能會重名,記名字反而不是一件輕松的事兒,根據(jù)每個人共有的、穩(wěn)定的特征賦予一個“編號”,這些編號是有一定的規(guī)律的,這時無需關心你到底是誰,只需要按照編號進行列隊,就能夠隨機找到你。而這個編號就可以說是你在這個列隊中地址。
如果人數(shù)實在是太多呢?那就分隊,比如每一隊20個人。這時再找人,只需要隨機說第幾隊、第幾號就能夠找到對應的人。
如果人數(shù)還是很多呢?比如說......全國人都在一個班級里......那就劃省劃市劃縣劃鄉(xiāng)劃村(或者劃街道劃小區(qū)劃樓劃樓層)。
也就是說,組成整體的單位越多,單位所對應的地址可能會越長。
但是地址也是數(shù)據(jù)呀,總得有地方記錄下來吧......所以你的身份證上必要有一長串記錄的是你的住址,還會有一個在全國范圍內(nèi)唯一的編號:身份證號碼。這就是你的“地址”。
所以,在計算機中,地址也是一樣的,也需要存儲下來,同時,還需要它參與運算。所以哪里運算速度最快,當然就存儲在哪里嘍。計算機中,除了CPU,最快的當然是寄存器了。所以找?guī)讉€寄存器專用于存儲地址,那這樣的寄存器就稱為“地址寄存器”,不過這個名字好像不大好聽。那就換個名字唄!既然地址的作用是找數(shù)據(jù),那也就是說指出數(shù)據(jù)在哪嘍,就叫“指針”吧!
如果一個數(shù)據(jù)很長,那簡單,我們找到它開始的地址,存在寄存器中,再找出它結(jié)束的地址。這樣一來,存儲開始地址的那個寄存器可能不會一直變化,但是存儲結(jié)束地址的那個寄存器可能會一直在變化,那也起個名字吧,這樣說也太麻煩了,啰里啰唆的。存儲開始地址的寄存器稱為“基地址指針寄存器”,存儲結(jié)束地址的寄存器稱為“偏移地址指針寄存器”,也可以叫做“堆棧指針寄存器”。這樣一來,就有了兩個專門指示數(shù)據(jù)開始地址與結(jié)束地址的寄存器了。
但是,還不行,因為地址還需要指示數(shù)據(jù)呀,地址本身沒有用的呀。所以,我們還需要幾個和數(shù)據(jù)本身相關的指針寄存器。幾個呢?
根據(jù)最基本的數(shù)學運算,我們可以知道,不管多復雜的運算,都可以看作是兩個基本式之間運算的復合。也就是說,代價最低的情況下,一般運算最多需要兩個基本式。這也就意味著,我們只需要兩個寄存器就可以處理大部分的數(shù)據(jù)。
至于怎么運算,那是累加寄存器的事兒,地址寄存器只負責和地址相關的事兒。
那......兩個地址之間最有可能發(fā)生的情況就是數(shù)據(jù)的轉(zhuǎn)移,因為在內(nèi)存中進行算術運算那也太慢了,而數(shù)據(jù)轉(zhuǎn)移完全就是把操作指令提示給內(nèi)存就完事兒了。所以從第一個寄存器轉(zhuǎn)移到第二個寄存器中去,那第一個寄存器就叫做“源指針寄存器”,第二個寄存器就叫做“目的指針寄存器”。
那這些寄存器能存多大的地址呢?那就得看CPU能存多大的數(shù),16位CPU最大處理16位的數(shù),32位CPU最大處理32位的數(shù),64位CPU最大處理64位的數(shù)......
很好,但是Intel不同意,他在8086這個16位的CPU上改動了一下,針對地址,他加了4根地址總線,也就意味著,可以用20位地址,也就是說,8086的地址范圍變成了2^20=1M。但是8086的寄存器都是16位的!那就“拼單”嘛。
16加4不就是20嗎?分別用兩個寄存器來標識,也就說,用兩個寄存器給內(nèi)存分組了。一般情況下,都是大數(shù)加小數(shù),所以16位的大數(shù)一般也就放在段寄存器,而剩下的數(shù)就放在段偏移地址寄存器中。
根據(jù)段(Segment)存放數(shù)據(jù)的特性不同,分為4個最基本的段:代碼段(Code)、數(shù)據(jù)段(Data)、堆棧段(Stack)、附加段(Extension)。這些都是基地址,那么偏移地址呢,放哪里都可以,無所謂,問題不大。只要段基地址+偏移地址一共是20位,其他你高興就好。
可以看到,地址就是指針,指針就是地址。同時地址也可以被存儲,也就是可以像看待數(shù)據(jù)一樣看待地址,地址也是一種數(shù)據(jù)。但地址的特殊地方在于地址本身沒啥用,但在地址上的那個數(shù)據(jù)才是我們需要的。
需要注意的是,在一些“系統(tǒng)”中,指針的寬度可能會被“修飾”,即無論是32位系統(tǒng)還是64位系統(tǒng),在這些“系統(tǒng)”中,指針的寬度都是32位。但是在通用的系統(tǒng)平臺中,指針的寬度一般都是CPU的數(shù)據(jù)寬度,即32位系統(tǒng)中的指針寬度一般是32位,64位系統(tǒng)中的指針寬度一般是64位。
標簽:
-
14
2023-06【保姆級教程-淘寶虛擬產(chǎn)品運營】第二章 第1節(jié):內(nèi)功打磨 環(huán)球熱聞
第一章我們講述了怎么開店,怎么進行前期的基礎設置,那第二章我們 -
14
2023-06視焦點訊!誦讀詩文啟智潤心 傳承經(jīng)典培根鑄魂--文峰區(qū)東風小學經(jīng)典誦讀伴成長主題實踐活動
為教育和引導青少年學生讀經(jīng)典、學經(jīng)典、愛經(jīng)典,促進青少年學生全面發(fā) -
14
2023-06當前焦點!中國非化石能源發(fā)電裝機容量占比超50%
據(jù)新華社上海電(記者何欣榮、桑彤)記者從11日舉行的首屆上海國際碳中 -
14
2023-06世界即時看!筆記本電腦黑屏了怎么恢復正常?筆記本電腦電量不足會導致黑屏嗎?
筆記本電腦黑屏了怎么恢復正常?方法一、1 筆記本能打開,但是黑屏,風


全球?qū)崟r:“憂居”變“優(yōu)居”,今年我市計劃改造191戶農(nóng)村危房 希望的田野上“改”出幸福的家

最長?最快?最酷炫?蘇州軌交11號線太酷啦 今頭條

-
1
欠信用卡錢會連累夫妻嗎? 沒錢還信用卡了怎么辦?
-
2
天然氣多少錢一立方米?天然氣是怎么收費的?
-
3
什么是毛利?毛利怎么算?毛利的計算公式詳解
-
4
德國2月工業(yè)新訂單環(huán)比增加4.8% 為連續(xù)第三個月環(huán)比增加
-
5
還不上信用卡被限制高消費后有什么后果? 信用卡欠了三千會被起訴嗎?
-
6
特斯拉:2022年得州超級工廠的員工人數(shù)增加了兩倍多
