最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

你真的了解二級指針嗎?

2021-12-04 20:55 作者:6號課堂  | 我要投稿

?????????????????????????????????????????????????????????????????作者:嵌入式小報(bào)

什么是指針?

????????大家對指針應(yīng)該都熟悉了吧?指針變量存儲的是個指向某個數(shù)據(jù)類型地址變量。char 類型的指針變量(如地址0x0a里面存放著地址變量0x0b)內(nèi)容指向的數(shù)據(jù)類型是char、Int類型的指針變量內(nèi)容指向int類型的數(shù)據(jù)。如圖1所示綠色框內(nèi)藍(lán)色箭頭(0x0a)指向目標(biāo)數(shù)據(jù)框(藍(lán)色框)表示目標(biāo)數(shù)據(jù)的地址(藍(lán)色框內(nèi)的內(nèi)容就是目標(biāo)數(shù)據(jù)地址0x0b)。struct 類型(聚合類型數(shù)據(jù))的指針變量指向聚合類型數(shù)據(jù)類型的首地址如圖2所示。綠色框內(nèi)藍(lán)色箭頭表示指針變量存儲的值,指向目標(biāo)數(shù)據(jù)的框頂表示目標(biāo)數(shù)據(jù)的首地址。(指針類型強(qiáng)制轉(zhuǎn)換除外)

圖1?圖2

來個例子:例如??

圖3

????????但是指針變量在32為系統(tǒng)中不管指向哪種類型的數(shù)據(jù)均只占有四個字節(jié),這四個字節(jié)存儲的值是指向所指向數(shù)據(jù)單元的的地址,結(jié)構(gòu)體等聚合類型指向的是聚合類型數(shù)據(jù)的首地址。(這里說的是一級指針哦)

注意上圖

?

圖4

????????從圖4仿真就可以看到指向結(jié)構(gòu)體類型的指針變量指向的是目標(biāo)結(jié)構(gòu)體首地址。

何為二級指針?

二級指針就是指針套指針,如圖5所示

圖5

????????第一個綠色框內(nèi)藍(lán)色箭頭表示指針變量里面存儲著第二個綠色框指針變量的地址,第二個綠色框內(nèi)存儲的地址值才是目標(biāo)數(shù)據(jù)的地址。那我們?nèi)绾稳ト《壷羔樌锩娴膬?nèi)容呢?直接上例子。如圖6所示

?

圖6

????????以一個一維數(shù)組為例,將它作為二級指針來用,我們知道指針就是表示的地址值(所以是無符號的整數(shù)哦,沒那個計(jì)算機(jī)什么地址是負(fù)數(shù)吧),形參是二級指針,數(shù)組明就是個地址(圖5第二個框),為了與形參類型相互匹配所以取數(shù)組明的地址(圖5第一個框),形參是void **這樣的接收方式,多以將數(shù)組名的地址強(qiáng)制轉(zhuǎn)化為void*。

再來看接收打印函數(shù), 32為系統(tǒng)的指針是4字節(jié),也就是圖5第一個框存儲的數(shù)據(jù)必須輸4字節(jié)的地址變量,所以先將void* 轉(zhuǎn)換為(unsigned int *)或者 (unsigned char *)。如圖7所示:

?

圖7

????????0x2000042C 是pdata的首地址,如果把void* 轉(zhuǎn)換為(unsigned char *),地址就是四個字節(jié)的拼湊和unsigned char *)是一樣的,畢竟指針變量占據(jù)4個字節(jié)嘛。因此我先把void*轉(zhuǎn)換為正確的指針形式之后,也就是正確到達(dá)圖5的第二個框,也就是要指向的目標(biāo)數(shù)據(jù)的框,接下來按照你的定義的所指向目標(biāo)數(shù)據(jù)類型轉(zhuǎn)換就行了(此處一定要是所要指向的數(shù)據(jù)類型)。

總結(jié):指針變量存儲的是個指向某個數(shù)據(jù)類型地址變量。二級指針就是指針套指針,如果指針類型確定取數(shù)據(jù)就是多一個*的問題,如果是 void ** 首先要轉(zhuǎn)化為(unsigned int *)或者 (unsigned char *)取出第二個指針的內(nèi)容才能進(jìn)行后面的操作!

今天的內(nèi)容就分享到這里了,記得分享加關(guān)注哦??!謝謝各位看官!

??

歡迎交流


你真的了解二級指針嗎?的評論 (共 條)

分享到微博請遵守國家法律
年辖:市辖区| 石首市| 大庆市| 阿巴嘎旗| 杭锦后旗| 电白县| 通许县| 托里县| 上林县| 马关县| 四会市| 长泰县| 吉安市| 富蕴县| 阳东县| 长泰县| 双流县| 集安市| 青海省| 潢川县| 静安区| 定结县| 杨浦区| 建水县| 建德市| 景洪市| 同德县| 泰安市| 玛沁县| 南宫市| 南召县| 温宿县| 海林市| 宁乡县| 延长县| 山东省| 九龙坡区| 隆林| 大丰市| 南雄市| 察隅县|