那曲檬骨新材料有限公司

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

底層解析C指針(一)

CHANBAEK ? 來源:博客園-LSWen ? 作者:博客園-LSWen ? 2023-02-15 14:47 ? 次閱讀

指針是C語言中的精髓部分,同樣也是C語言的難點(diǎn)所在,下面從最底層來分析C指針。

首先先放節(jié)論,這樣可能會(huì)節(jié)省部分人的閱讀時(shí)間。

對(duì)于一級(jí)指針:

poYBAGPsf2WAZ0amAAB-Mt8035c089.png

對(duì)于二級(jí)指針:

poYBAGPsf2WAFb0BAACmObcSN3E546.png

同理我們有:

n級(jí)指針

pYYBAGPsf2WAfhFjAACRuL9Vzm8513.png

需要注意的是,上面的所有指針都需要初始化,如果看懂了上面的圖,也就知道為什么必須初始化的原因了,其實(shí)指針實(shí)質(zhì)上是不存在的,編譯器會(huì)將其全部替換為地址,正因?yàn)槿绱耍瑢?dǎo)致很多初學(xué)者被各種符號(hào)暈頭轉(zhuǎn)向,如同普通變量一樣,指針也是一種變量,說到底,變量其實(shí)也不存在,在編譯器編譯的過程中,所有的變量會(huì)被替換掉,真正有用的只是變量的值, 如果想詳細(xì)了解此類容,讀者可以看編譯原理這本書。

下面我們來驗(yàn)證上面的結(jié)論

poYBAGPsf2WANRfCAAAViDS9VMk169.png

上面我采用了直接強(qiáng)制轉(zhuǎn)換的方式來分配地址,這個(gè)并不是每次執(zhí)行都會(huì)成功,原因是強(qiáng)行分配的地址很可能恰好被使用或者是內(nèi)存碎片再或者沒有進(jìn)行字節(jié)對(duì)齊,這些都會(huì)導(dǎo)致強(qiáng)行分配地址時(shí)失敗,因此可以多進(jìn)行測(cè)試,下面得到輸出。

poYBAGPsf2WADoitAAAQtFZnoFY977.png

現(xiàn)在無法知道,為了直觀,我們直接打開Debug調(diào)試,同時(shí)設(shè)置斷點(diǎn),現(xiàn)在我們打開Memory dump,如圖所示

pYYBAGPsf2WAV0udAAAfYS9uSWw751.png

x86結(jié)構(gòu)的內(nèi)存結(jié)構(gòu)為大端模式,低字節(jié)放到高地址。

此時(shí)我們輸入0x60fef2,點(diǎn)擊"GO",可以看到內(nèi)存中的數(shù)據(jù)如下圖所示:

pYYBAGPsf2WAM1j_AAAlhJEhr7o681.png

可以看到內(nèi)存地址為0x60fef2處的數(shù)據(jù)為5

然后輸入0x60fefc點(diǎn)擊"GO",可以看到內(nèi)存中的數(shù)據(jù)如下圖所示:

pYYBAGPsf2WAKRFAAAAlPNUripA667.png

可以看到內(nèi)存地址為0x60fefc處的數(shù)據(jù)為0x60fef2

可以看到這個(gè)完全符合上面的節(jié)論,

需要說明的是,我們寫程序時(shí)雖然使用了 p, &p, *p這三個(gè)符號(hào),但是計(jì)算機(jī)編譯過程中只有兩個(gè)有用的數(shù)據(jù)

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 內(nèi)存
    +關(guān)注

    關(guān)注

    8

    文章

    3055

    瀏覽量

    74327
  • C語言
    +關(guān)注

    關(guān)注

    180

    文章

    7614

    瀏覽量

    137709
  • 指針
    +關(guān)注

    關(guān)注

    1

    文章

    481

    瀏覽量

    70608
  • C指針
    +關(guān)注

    關(guān)注

    0

    文章

    10

    瀏覽量

    6419
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    C語言指針詳細(xì)解析

    可以對(duì)數(shù)據(jù)本身,也可以對(duì)存儲(chǔ)數(shù)據(jù)的變量地址進(jìn)行操作。 指針個(gè)占據(jù)存儲(chǔ)空間的實(shí)體在這段空間起始位置的相對(duì)距離值。在C/C++語言中,
    發(fā)表于 09-14 10:03

    C指針詳解

    底層的軟件打交道。這個(gè)時(shí)候,指針便體現(xiàn)出它獨(dú)特的魅力。指針的知識(shí)很多,有本經(jīng)典的書叫《C
    發(fā)表于 12-29 07:20

    C語言指針電子教程

    本資料是份不錯(cuò)的關(guān)于C語言指針的電子教程,希望對(duì)大家有所幫助... 指針簡(jiǎn)介 指針C語言中廣
    發(fā)表于 07-30 16:00 ?77次下載

    C指針習(xí)題答案配C指針

    C指針習(xí)題答案配C指針
    發(fā)表于 09-07 14:29 ?6次下載
    <b class='flag-5'>C</b>和<b class='flag-5'>指針</b>習(xí)題答案配<b class='flag-5'>C</b>和<b class='flag-5'>指針</b>

    C語言指針解析

    指針的概念 指針個(gè)特殊的變量,它里面存儲(chǔ)的數(shù)值被解釋成為內(nèi)存里的個(gè)地址。要搞清個(gè)
    發(fā)表于 11-02 11:38 ?2次下載

    c語言函數(shù)指針定義,指針函數(shù)和函數(shù)指針的區(qū)別

     往往,我們提到指針函數(shù)和函數(shù)指針的時(shí)候,就有很多人弄不懂。下面就由小編詳細(xì)為大家介紹C語言中函數(shù)指針
    發(fā)表于 11-16 15:18 ?3639次閱讀

    基于C語言中指針的基本用法解析

    C語言中其它的知識(shí)都學(xué)得可以,唯獨(dú)指針搞不懂。如果是這樣,我可以很負(fù)責(zé)的告訴你,對(duì)于這門編程語言,你等于是沒學(xué)。所以學(xué)好指針對(duì)于初學(xué)者是非常重要的。或許你會(huì)覺得它有點(diǎn)抽象,但是當(dāng)你徹底理解了
    的頭像 發(fā)表于 01-09 15:12 ?4837次閱讀

    從最底層的內(nèi)存存儲(chǔ)空間開始帶你了解C語言指針

    、前言 二、變量與指針的本質(zhì) 三、指針的幾個(gè)相關(guān)概念 四、指向不同數(shù)據(jù)類型的指針 五、總結(jié) 、前言 如果問
    的頭像 發(fā)表于 02-02 10:40 ?2477次閱讀
    從最<b class='flag-5'>底層</b>的內(nèi)存存儲(chǔ)空間開始帶你了解<b class='flag-5'>C</b>語言<b class='flag-5'>指針</b>

    C語言-指針定義與使用

    指針在很多書本上都是當(dāng)做重點(diǎn)來介紹,作為C語言的靈魂,項(xiàng)目里指針無處不在。 這篇文章介紹指針的基本用法。
    的頭像 發(fā)表于 08-14 10:02 ?1397次閱讀

    C語言指針詳細(xì)解析

    可以對(duì)數(shù)據(jù)本身,也可以對(duì)存儲(chǔ)數(shù)據(jù)的變量地址進(jìn)行操作。 指針個(gè)占據(jù)存儲(chǔ)空間的實(shí)體在這段空間起始位置的相對(duì)距離值。在C/C++語言中,
    的頭像 發(fā)表于 11-14 16:53 ?2255次閱讀
    <b class='flag-5'>C</b>語言<b class='flag-5'>指針</b>詳細(xì)<b class='flag-5'>解析</b>

    C語言中的懸空指針和野指針是什么意思?

    提起C語言大部分開發(fā)者很自然就會(huì)想到指針二字,沒錯(cuò),作為C的核心和靈魂,它的地位咱們就不再贅述了,今天我們想跟大家講的是指針中的兩個(gè)特有名詞:“懸空
    的頭像 發(fā)表于 02-09 17:20 ?1147次閱讀

    底層解析C指針(二)

    篇主要討論了C指針的本質(zhì),但并沒有解釋指針的類型問題,這次我們重點(diǎn)來討論指針的類型與指針內(nèi)存
    的頭像 發(fā)表于 02-15 14:48 ?742次閱讀
    <b class='flag-5'>底層</b><b class='flag-5'>解析</b><b class='flag-5'>C</b><b class='flag-5'>指針</b>(二)

    詳解C語言指針底層基本原理

    說到指針,估計(jì)還是有很多小伙伴都還是云里霧里的,有點(diǎn)“知其然,而不知其所以然”。但是,不得不說,學(xué)了指針C語言才能算是入門了。指針C語言
    的頭像 發(fā)表于 04-06 10:43 ?1320次閱讀

    C++智能指針底層實(shí)現(xiàn)原理

    C++智能指針的頭文件: #include 1. shared_ptr: 智能指針從本質(zhì)上來說是個(gè)模板類,用類實(shí)現(xiàn)對(duì)指針對(duì)象的管理。 te
    的頭像 發(fā)表于 11-09 14:32 ?792次閱讀
    <b class='flag-5'>C</b>++智能<b class='flag-5'>指針</b>的<b class='flag-5'>底層</b>實(shí)現(xiàn)原理

    C語言指針學(xué)習(xí)筆記

    本文從底層內(nèi)存分析,徹底讓讀者明白C語言指針的本質(zhì)。
    的頭像 發(fā)表于 11-05 17:40 ?305次閱讀
    <b class='flag-5'>C</b>語言<b class='flag-5'>指針</b>學(xué)習(xí)筆記
    爱马仕赌球| 鹤山市| 大发888游戏在线客服| 百家乐赌博工具| 澳门百家乐官网论坛| 百家乐官网网站可信吗| 百家乐官网视频二人雀神| 介休市| 利博国际| 足球比分直播| 百家乐1元投注| 百家乐资金注码| 百家乐官网庄闲桌| 电子百家乐官网假在线哪| 高档百家乐官网桌子| 百家乐官网庄的概率| 博彩乐透乐| 天空娱乐城| 巴登娱乐城真人娱乐| 大发888娱乐城下载地址| 申烨太阳城三期| 真博百家乐的玩法技巧和规则 | 正品百家乐的玩法技巧和规则| 菲律宾百家乐娱乐平台| 娱乐城百家乐送白菜| 百家乐只打一种牌型| 墓地风水24山| 百家乐官网俄罗斯轮盘转盘套装| 送现金百家乐官网的玩法技巧和规则| 网上百家乐官网破战| 百家乐官网平的概率| 百家乐官网美国玩法| 真人百家乐官网代理分成| 澳门百家乐官网群策略| 百家乐官网平台导航| 诚信百家乐官网在线平台| 百家乐官网投注方法| 百家乐官网小音箱| 百家乐官网注册优惠平台| 视频百家乐官网网站| 百家乐官网稳赢秘诀教学|