精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

徹底理解 C 語(yǔ)言中的指針

開(kāi)發(fā) 后端
注意這里的限定,再讀一遍,沒(méi)有高級(jí)語(yǔ)言,沒(méi)有操作系統(tǒng),在這樣的限制之下,你必須直面內(nèi)存讀寫(xiě)的本質(zhì)。

 大家好,我是小風(fēng)哥。

假定給你一塊非常小的內(nèi)存,這塊內(nèi)存只有8字節(jié),這里也沒(méi)有高級(jí)語(yǔ)言,沒(méi)有操作系統(tǒng),你操作的數(shù)據(jù)單位是單個(gè)字節(jié),你該怎樣讀寫(xiě)這塊內(nèi)存呢?

注意這里的限定,再讀一遍,沒(méi)有高級(jí)語(yǔ)言,沒(méi)有操作系統(tǒng),在這樣的限制之下,你必須直面內(nèi)存讀寫(xiě)的本質(zhì)。

這個(gè)本質(zhì)是什么呢?

本質(zhì)是你需要意識(shí)到內(nèi)存就是一個(gè)一個(gè)裝有字節(jié)的小盒子,這些小盒子從0到N編好了序號(hào)。

這時(shí)如果你想計(jì)算1+2,那么你必須先把1和2分別放到兩個(gè)小盒子中,假設(shè)我們使用Store指令,把數(shù)字1放到第6號(hào)小盒子,那么用指令表示就是這樣: 

  1. store 1 6 

注意看這條指令,這里出現(xiàn)了兩個(gè)數(shù)字:1和6,雖然都是數(shù)字,但這兩個(gè)數(shù)字的含義是不同的,一個(gè)代表數(shù)值,一個(gè)代表內(nèi)存地址。

與寫(xiě)對(duì)應(yīng)的是讀,假設(shè)我們使用load指令,就像這樣: 

  1. load r1 6 

現(xiàn)在依然有一個(gè)問(wèn)題,這條指令到底是數(shù)字6寫(xiě)入r1寄存器還是把第6號(hào)小盒子中裝的數(shù)字寫(xiě)入r1寄存器?

可以看到,數(shù)字在這里是有歧義的,它既可以表示數(shù)值也可以表示地址,為加以區(qū)分我們需要給數(shù)字添加一個(gè)標(biāo)識(shí),比如對(duì)于前面加上$符號(hào)的就表示數(shù)值,否則就是地址: 

  1. store $1 6  
  2. load r1 6 

這樣就不會(huì)有歧義了。

現(xiàn)在第6號(hào)內(nèi)存中裝入了數(shù)值1:

即地址6代表數(shù)字1:

  1. 地址6 -> 數(shù)字1 

但“地址6”對(duì)人類來(lái)說(shuō)太不友好了,人類更喜歡代號(hào),也就是起名字,假設(shè)我們給“地址6”換一個(gè)名字,叫做a,a代表的就是地址6,a中存儲(chǔ)的值就是1,用人類在代數(shù)中直觀的表示就是: 

  1. a = 1 

就這樣所謂的變量一詞誕生了。

我們可以看到,從表面上看變量a等價(jià)于數(shù)值1,但背后還隱藏著一個(gè)重要的信息,那就是變量a代表的數(shù)字1存儲(chǔ)在第6號(hào)內(nèi)存地址上,即變量a或者說(shuō)符號(hào)a背后的含義是:

  1.  表示數(shù)值1
  2.  該數(shù)值存儲(chǔ)在第6號(hào)內(nèi)存地址

到現(xiàn)在為止第2個(gè)信息好像不太重要,先不用管它。

既然有變量a,就會(huì)有變量b,如果有這樣一個(gè)表示: 

  1. b = a 

把a(bǔ)的值給到b,這個(gè)賦值在內(nèi)存中該怎么表示呢?

很簡(jiǎn)單,我們?yōu)樽兞縝也找一個(gè)小盒子,假設(shè)變量b放在第2號(hào)小盒子上:

可以看到,我們完全copy了一份變量a的數(shù)據(jù)。

現(xiàn)在有了變量,接下來(lái)讓我們升級(jí)一下,假設(shè)變量a不僅僅可以表示占用1個(gè)字節(jié)的數(shù)據(jù),也可以表示占用任意多內(nèi)存的數(shù)據(jù),就像這樣:

現(xiàn)在變量a占據(jù)5個(gè)字節(jié),足足占用了整個(gè)內(nèi)存的一大半空間,此時(shí)如果我們依然想要表示b = a會(huì)怎樣呢?

如果你依然采用copy 的方法會(huì)發(fā)現(xiàn)我們的內(nèi)存空間已經(jīng)不夠用了,因?yàn)檎麄€(gè)內(nèi)存大小就8字節(jié),采用copy的方法僅這兩個(gè)變量代表的數(shù)據(jù)就將占據(jù)10字節(jié)。

怎么辦呢?

不要忘了變量a背后可是有兩個(gè)含義的,再讓我們看一下:

  1.  表示數(shù)值1
  2.  該數(shù)值存儲(chǔ)在第6號(hào)內(nèi)存地址

重點(diǎn)看一下第2個(gè)含義,這個(gè)含義告訴我們什么呢?

它告訴我們不管一個(gè)變量占據(jù)多少內(nèi)存空間,我們總可以通過(guò)它在內(nèi)存中地址找到該數(shù)據(jù),而內(nèi)存地址僅僅就是一個(gè)數(shù)字,這個(gè)數(shù)字和該數(shù)據(jù)占用空間的大小無(wú)關(guān)。

啊哈,現(xiàn)在變量的第2個(gè)含義終于排上用場(chǎng)了,如果我們想用變量b也去指代變量a,干嘛非要直接copy一份數(shù)據(jù)呢?直接使用地址就不好了,就像這樣:

變量a在內(nèi)存中地址為3,因此變量b中我們可以僅僅存儲(chǔ)3這個(gè)數(shù)字即可。

現(xiàn)在變量b就開(kāi)始變得非常有趣了。

首先變量b沒(méi)什么特殊的,只不過(guò)變量b存儲(chǔ)的東西我們不可以按照數(shù)值來(lái)解釋,而是必須按照地址來(lái)解釋。

當(dāng)一個(gè)變量不僅僅可以用來(lái)保存數(shù)值也可以保存內(nèi)存地址時(shí),指針誕生了。

有很多資料僅僅說(shuō)指針就是地址,但小風(fēng)哥認(rèn)為這是一種偷懶的解釋,僅僅停留在匯編層面來(lái)理解,有失偏頗,在高級(jí)語(yǔ)言中,指針首先是一個(gè)變量,只不過(guò)這個(gè)變量保存的恰好是地址而已,指針是內(nèi)存地址的更高一級(jí)抽象。

如果僅僅把指針理解為內(nèi)存地址的話你就必須知道所謂的間接尋址。

這是什么意思呢?

如果使用匯編語(yǔ)言來(lái)加載變量a的值該怎么寫(xiě)呢? 

  1. load r1 1 

想一想,這是不是會(huì)有問(wèn)題,因此這樣的話該指令會(huì)把數(shù)值3加載到r1寄存器中,然而我們想要把內(nèi)存地址1中保存的數(shù)值也解釋為內(nèi)存地址,這時(shí)必須為1再次添加一個(gè)標(biāo)識(shí),比如@: 

  1. load r1 @1 

這時(shí)該指令會(huì)首先把內(nèi)存地址1中保存的值讀取出來(lái)發(fā)現(xiàn)是3,然后再次把3按照內(nèi)存地址進(jìn)行解釋,3指向的數(shù)據(jù)就是變了a: 

  1. 地址1 -> 地址3 -> 數(shù)據(jù)a 

這就是所謂的間接尋址,Indirect addressing,在匯編語(yǔ)言下你必須能意識(shí)到這一層間接尋址,因?yàn)樵趨R編語(yǔ)言中是沒(méi)有變量這個(gè)概念的。

然而高級(jí)語(yǔ)言則不同,這里有變量的概念,此時(shí)地址1代表變量b,但使用變量的一個(gè)好處就在于很多情況下我們只需要關(guān)心其第一個(gè)含義,也就是說(shuō)我們只需要關(guān)心變量b中保存了地址3,而不需要關(guān)心變量b到底存儲(chǔ)在哪里,這樣使用變量b時(shí)我們就不需在大腦里想一圈間接尋址這一問(wèn)題了,在程序員的大腦里變量b直接指向數(shù)據(jù)a: 

  1. b -> 數(shù)據(jù)a 

再來(lái)對(duì)比一下: 

  1. 地址1 -> 地址3 -> 數(shù)據(jù)a   # 匯編語(yǔ)言層面  
  2. 變量b -> 數(shù)據(jù)a            # 高級(jí)語(yǔ)言層面 

這就是為什么我說(shuō)指針其實(shí)是內(nèi)存地址的更高級(jí)抽象,這個(gè)抽象的目的就在于屏蔽間接尋址。

當(dāng)變量不僅僅可以存值也可以存放地址時(shí),一個(gè)全新的時(shí)代到來(lái)了:看似松散的內(nèi)存在內(nèi)部竟然可以通過(guò)指針組織起來(lái),同時(shí)這也讓程序直接處理復(fù)雜的數(shù)據(jù)結(jié)構(gòu)成為可能,比如就像下圖這樣:

這就是所謂的鏈表了。

指針這個(gè)概念首次出現(xiàn)在 PL/I 語(yǔ)言中,當(dāng)時(shí)是為了增加鏈表處理能力,大家不要以為鏈表這種數(shù)據(jù)結(jié)構(gòu)是非常司空見(jiàn)慣的,這在1964年左右并不是一件容易的事情,關(guān)于鏈表你還可以參考這篇《徹底理解鏈表》。

值得一提的是,Multics操作系統(tǒng)就是 PL/I 語(yǔ)言實(shí)現(xiàn)的,這也是第一個(gè)用高級(jí)語(yǔ)言實(shí)現(xiàn)的操作系統(tǒng),然而Multics操作系統(tǒng)在商業(yè)上并不成功,參與該項(xiàng)目的Ken Thompson, Dennis Ritchie后來(lái)決定自己寫(xiě)一個(gè)更簡(jiǎn)單的,Unix以及C語(yǔ)言誕生了,或許是在開(kāi)發(fā)Multic時(shí)見(jiàn)識(shí)到了PL/I語(yǔ)言中指針的威力,C語(yǔ)言中也有指針的概念。

那么指針在C語(yǔ)言中是一個(gè)什么樣的概念?為什么說(shuō)指針威力強(qiáng)大但又破壞性十足?引用和指針又有什么關(guān)聯(lián)? 

 

責(zé)任編輯:龐桂玉 來(lái)源: C語(yǔ)言與C++編程
相關(guān)推薦

2023-10-27 11:21:20

C語(yǔ)言Multics語(yǔ)言

2021-12-06 11:19:47

語(yǔ)言指針內(nèi)存

2009-06-30 10:46:05

多級(jí)指針

2025-09-25 17:17:06

GoC++指針

2019-12-10 13:55:10

Go指針存儲(chǔ)

2010-07-13 15:34:09

Perl語(yǔ)言

2010-07-26 16:23:23

Perl語(yǔ)言

2009-06-16 11:44:00

Java IO系統(tǒng)

2022-03-29 08:30:47

指針數(shù)組C語(yǔ)言

2022-10-20 18:43:32

C語(yǔ)言golang安全

2021-01-13 06:58:35

C語(yǔ)言函數(shù)指針

2020-09-27 14:41:37

C語(yǔ)言編程語(yǔ)言計(jì)算機(jī)

2010-08-24 16:00:43

C語(yǔ)言

2022-07-27 16:40:25

C語(yǔ)言

2023-12-21 11:46:48

C語(yǔ)言柔性數(shù)組開(kāi)發(fā)

2011-05-13 17:25:34

C

2010-01-15 19:17:48

C++語(yǔ)言

2024-04-10 12:14:36

C++指針算術(shù)運(yùn)算

2024-05-16 12:23:45

C語(yǔ)言指針代碼

2011-03-30 11:01:13

C語(yǔ)言隨機(jī)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

日韩午夜精品视频| 亚洲欧洲性图库| 日本一本a高清免费不卡| 精品人妻一区二区三区日产乱码卜| 动漫一区二区| 久久久亚洲高清| 成人亚洲激情网| 国产成人愉拍精品久久 | 亚洲第一精品夜夜躁人人爽| 日本精品久久久久中文字幕| bestiality新另类大全| 91亚洲精品一区二区乱码| 国产精品美女主播| 日韩精品国产一区二区| 国产高清欧美| 日韩国产精品视频| 中文 日韩 欧美| 涩涩av在线| 亚洲欧美日韩久久精品| 欧美精品亚洲精品| 成人免费一级视频| 免费成人在线影院| 91成人免费观看网站| 欧美h片在线观看| 妖精一区二区三区精品视频| 日韩欧美亚洲一区二区| 日本人69视频| 经典三级一区二区| 福利精品视频在线| av无码久久久久久不卡网站| 欧美成人二区| 国产喷白浆一区二区三区| 国产高清精品一区二区| 久久国产乱子伦精品| 99视频一区| www国产精品com| aa片在线观看视频在线播放| 欧美一级做一级爱a做片性| 亚洲妇熟xx妇色黄| 亚洲综合五月天| 日韩精品系列| 国产99精品视频| 国产噜噜噜噜久久久久久久久| 日本一本高清视频| **女人18毛片一区二区| 麻豆mv在线看| 99久久99久久精品国产片果冻| 国产精品久久久久久一区二区| 日韩精品久久久久久久酒店| 伊人精品成人久久综合软件| 精品国产视频在线| 神马久久久久久久久久久| 麻豆成人入口| 日韩一级大片在线观看| 中文字幕线观看| 快播电影网址老女人久久| 亚洲国产精品视频| 免费观看国产视频在线| 在线观看免费网站黄| 久久婷婷国产综合精品青草| 国产精品免费一区二区三区观看| 一级片视频网站| 秋霞国产午夜精品免费视频| 欧美一级大片在线观看| 人妻少妇精品一区二区三区| 日韩av免费大片| www.精品av.com| 精品女人久久久| 久久视频国产| 最新的欧美黄色| 91狠狠综合久久久久久| 欧美精品一二| 在线观看视频99| 伊人影院综合网| 国产亚洲第一伦理第一区| 亚洲欧美另类中文字幕| 日韩精品无码一区二区三区久久久 | 中文在线资源天堂| 狂野欧美性猛交xxxx巴西| 国模视频一区二区| 日本亚洲欧美在线| 亚洲高清激情| 成人国产在线视频| 国产二级一片内射视频播放| 国产精品视频一区二区三区| 欧美日韩亚洲综合一区二区三区| 欧美精品无码一区二区三区| 欧美特大特白屁股xxxx| 日本精品免费观看高清观看| 噼里啪啦国语在线观看免费版高清版| 欧美艳星kaydenkross| 色激情天天射综合网| 五月婷婷狠狠操| 57pao成人永久免费| 欧美一级片在线看| 亚洲欧美日韩中文字幕在线观看| 久久aimee| 亚洲色图日韩av| 超碰人人干人人| 中文字幕人成人乱码| 欧美日本国产在线| 久久免费激情视频| 蜜桃一区二区三区在线| 91九色在线视频| 日韩一级在线播放| 国产日产欧美精品一区二区三区| 亚洲一区二区三区加勒比 | 国产免费xxx| 美女日批视频在线观看| 欧美视频裸体精品| www.精品在线| 亚洲五码在线| 亚洲国产97在线精品一区| 在线观看福利片| 亚洲第一天堂| 欧美亚洲国产另类| 亚洲一卡二卡在线观看| 国产不卡视频一区| 神马影院午夜我不卡影院| 九九视频在线免费观看| 精品91在线| 国产精品久久不能| 蜜桃91麻豆精品一二三区| 91女神在线视频| 日韩电影免费观看在| 1024在线看片你懂得| 欧洲视频一区二区| 少妇熟女视频一区二区三区| 日韩av在线中文字幕| 久久久久国产视频| 在线观看免费视频一区| 91网上在线视频| 法国空姐在线观看免费| 成人看片在线观看| 亚洲成人网在线观看| 久久av红桃一区二区禁漫| 久久高清免费观看| 高清视频一区二区三区| 欧洲不卡av| 欧美日韩国产精品一区| 亚洲第一成肉网| 欧美日韩精品一区二区视频| 97视频网站入口| www.亚洲欧美| 中文字幕一区二区三区精华液| 国产亚洲天堂网| 福利片在线一区二区| 色偷偷88888欧美精品久久久| 久久久国产高清| 国产成人aaaa| 男女啪啪的视频| 国产欧美自拍| 亚洲人成电影在线播放| 91九色丨porny丨肉丝| 福利一区二区在线| 永久免费网站视频在线观看| 欧美大片91| 久久精品电影一区二区| 国产精品xxxxxx| 国产香蕉久久精品综合网| 精品久久久久久久久久中文字幕| 91成人福利| 欧美日韩国产成人| 亚洲风情第一页| 亚洲黄色尤物视频| 国产又粗又猛大又黄又爽| 91日韩欧美| 成人免费在线视频网站| 黄网站在线播放| 欧美电影在线免费观看| 成人免费精品动漫网站| 美腿丝袜在线亚洲一区| 正在播放亚洲| 9999精品视频| 久久99国产精品自在自在app | 一区二区视频免费看| 精品一区二区三区视频| 中文字幕av久久| 一区二区免费| 91av在线不卡| 免费av在线电影| 精品视频资源站| 黄色精品视频在线观看| 国产综合久久久久影院| 国产精品免费看久久久无码| 国产精品网址| 欧美国产中文字幕| 男女污污视频在线观看| 欧美午夜电影在线播放| 欧美三级日本三级| 99国产精品视频免费观看| 黄色免费观看视频网站| 欧美另类69xxxxx| 51国产成人精品午夜福中文下载 | 在线观看欧美理论a影院| 国产成人精品综合久久久| 国产福利电影在线| 欧美一区二区女人| 欧美不卡视频在线观看| 国产欧美一区二区精品婷婷| 亚洲天堂一区二区在线观看| 亚洲伦伦在线| 亚洲一区二区三区精品动漫| 91综合久久爱com| 欧洲亚洲免费在线| 中文日本在线观看| 精品国产乱码久久久久久久久| 亚洲黄色三级视频| 国产精品久久久久久一区二区三区| 人人爽人人爽av| 国产一区二区三区的电影| 性欧美大战久久久久久久免费观看| 精品国产乱码一区二区三区| 欧美中文字幕在线播放| 国产精品久久麻豆| 亚洲人成在线一二| 亚洲国产剧情在线观看| 欧美手机在线视频| 麻豆亚洲av成人无码久久精品| 亚洲国产精品精华液2区45| 中国特级黄色片| 免费观看在线综合| heyzo亚洲| 亚洲精品成人影院| 欧美午夜精品久久久久免费视| 国产视频一区二| 日韩av免费在线看| 久草在线新免费首页资源站| 中文字幕亚洲字幕| 日本中文字幕电影在线观看| 欧美一级免费大片| 亚洲无码精品在线播放| 亚洲资源在线观看| 999精品视频在线观看播放| 久久久久国产精品麻豆ai换脸 | 大陆成人av片| 一级做a免费视频| 久久尤物视频| 欧美视频免费播放| 亚洲精品美女| 韩日视频在线观看| 欧美午夜在线| 男插女免费视频| 久久人体视频| 视频三区二区一区| 精品影片在线观看的网站| 精品久久久久久一区| 97成人在线| 都市激情久久久久久久久久久| va天堂va亚洲va影视| 国产日韩换脸av一区在线观看| 国产高清不卡| 欧美中文在线字幕| 亚洲精品中文字幕| 国产精品96久久久久久| 88xx成人永久免费观看| 日本国产精品视频| 另类激情视频| 日本久久久久久久久| 亚洲涩涩在线| 日韩美女免费线视频| 欧美成人a交片免费看| 日韩av黄色在线观看| 大香伊人久久| 57pao成人国产永久免费| 55av亚洲| 26uuu国产精品视频| 自拍偷拍欧美视频| 国产91在线播放九色快色| 芒果视频成人app| 国产国语videosex另类| 日韩经典一区| 成人精品久久久| 国产精品久久久久久久久免费高清| 成人黄色短视频在线观看| 国产精品3区| 亚洲综合第一页| 亚洲一区二区电影| 精品高清视频| 欧美日韩国产在线观看网站| 日韩欧美一区二区三区四区| 久久国产精品成人免费观看的软件| 影音先锋在线亚洲| 国模吧视频一区| 99色这里只有精品| 日韩二区在线观看| 国产欧美激情视频| 成年人网站91| 日韩一级av毛片| 亚洲三级理论片| 日韩av免费网址| 色屁屁一区二区| 国产绿帽一区二区三区| 精品国产电影一区二区| freemovies性欧美| 久久91亚洲精品中文字幕奶水| 少妇在线看www| 国产精品www网站| 欧美一级片网址| 你懂的网址一区二区三区| 成人在线亚洲| 国产91在线亚洲| 国产精品久久777777毛茸茸| 亚洲综合在线一区二区| 99精品视频一区| 日本成人精品视频| 精品久久久久久中文字幕| 中文字幕av无码一区二区三区| 日韩免费视频一区| 狠狠狠综合7777久夜色撩人| 欧美成人精品xxx| 国产精品一区二区av影院萌芽| 亚洲在线一区二区| 国产欧美日韩精品一区二区免费 | 污视频网站免费观看| 最近2019中文字幕大全第二页| 2021中文字幕在线| 国产成人精品午夜| 久久精品66| 一区二区三区四区免费视频| 9色精品在线| 久久艹这里只有精品| 国产网站一区二区| 亚洲精品www久久久久久| 51精品视频一区二区三区| 巨骚激情综合| 高清视频欧美一级| 成人亚洲精品| 日韩一区不卡| 天堂va蜜桃一区二区三区漫画版| 亚洲精品一二三四| 国产精品女同一区二区三区| 国产三级av片| 精品久久久久香蕉网| 欧美一区二区三区在线观看免费| 欧美综合激情网| 牛牛影视一区二区三区免费看| 亚洲二区自拍| 蜜臀av性久久久久蜜臀aⅴ流畅| 男女黄床上色视频| 亚洲午夜av在线| a毛片在线免费观看| 久久久成人精品视频| 久久电影天堂| 日韩免费电影一区二区| 国产日韩欧美一区| 欧美xxxx黑人| 亚洲福利电影网| 亚洲av综合色区无码一区爱av | 午夜精品国产更新| 国产福利第一视频| 欧美精品在线视频观看| 自拍偷拍亚洲| 亚洲.欧美.日本.国产综合在线 | 国模私拍视频在线观看| 国产欧美日韩久久| 日本视频在线观看免费| 精品国产电影一区二区| 在线你懂的视频| 亚洲一区二区三区视频| 久久久久免费av| 中文字幕在线视频一区二区| 亚洲精品日日夜夜| 99精品久久久久久中文字幕 | 久久午夜福利电影| 欧美在线观看一区| 岛国大片在线观看| 人九九综合九九宗合| 香蕉久久夜色精品国产更新时间 | 国产九色在线| 日韩av成人在线| 精品国内自产拍在线观看视频| 九一精品在线观看| 1区2区3区国产精品| 一区不卡在线观看| 久久精品一区中文字幕| 亚洲精品成a人ⅴ香蕉片| 在线观看亚洲视频啊啊啊啊| 国内精品免费**视频| 欧美日韩免费一区二区| 精品久久久久久久久久久久久久久久久| 乱插在线www| 久久国产欧美精品| 捆绑调教一区二区三区| 国产1区2区3区4区| 亚洲缚视频在线观看| 色综合一本到久久亚洲91| 在线视频精品一区| 国产黑丝在线一区二区三区| 久久久久亚洲AV| 欲色天天网综合久久| 日韩成人在线观看视频| 老太脱裤子让老头玩xxxxx| 久久久久成人黄色影片| 国产又黄又粗又猛又爽| 国模视频一区二区| 日韩欧美视频在线播放| 插我舔内射18免费视频| 欧美午夜电影一区| 欧美videos另类精品|