亚洲高清在线观看_精品超碰_天天插天天干_欧美精品区_黄毛片视频_精品一区视频

單片機堆棧指針的理解

來源:網絡

點擊:1128

A+ A-

所屬頻道:新聞中心

關鍵詞:單片機,堆棧,指針

      堆棧指針sp在片內RAM128B中開辟棧區,并隨時跟蹤棧頂地址。它是按"先進后出"的原則存取數據。開機復位后,單片機棧底地址為07H。

      主要用來保存臨時數據,局部變量和中斷/自程序的返回地址。

      堆棧指針總是指向棧頂元素。所以數據入棧的時候,堆棧指針先加1,再壓棧。向上增長方式。和計算機的方式一樣。

      出棧的時候先彈出數據,堆棧指針再減1。

      如果堆棧的實現是往上長的(就是說往頂的方向長,其實質是你的棧底是定死的不能動,入棧的東西只能不斷往上疊,這就像你在書桌上放書一樣,桌底是定死的,所以你的書只能一本一本地往上堆,往上長),計算機內部的堆棧的實現采取的就是這種模式,所以就得像你說的那樣,“先修改指針,然后插入數據,出棧時剛好相反”,因為你堆棧指針指向的總是棧頂元素,棧底不能動,所以數據入棧前要先修改指針使它指向新的空余空間然后再把數據存進去,出棧的時候自然相反。

      然而,如果堆棧的實現是往下長的(就是說你每壓一個元素入棧,棧底就自動下移一個元素的位置,其實質就是這種堆棧模型是一個“無底洞”型),這個時候,你的棧頂就變成了定死的,你就可以先壓入元素,然后再修改指針。因為你的棧底是無限的,你壓入一個元素,新的元素就取代先前的棧頂元素占據棧頂的位置,那么你先前的指向棧頂元素的指針這個時候就該修改讓它指向這個新的棧頂元素了。

      下面的就是對“無底洞”型堆棧的一種實現的描述:

      壓棧(入棧):將對象或者數據壓入棧中,更新棧頂指針,使其指向最后入棧的對象或數據。

      彈棧(出棧):返回棧頂指向的對象或數據,并從棧中刪除該對象或數據,更新棧頂。

      話說回來,計算機內部肯定選第一種模型,不會選第二種,因為第二種模型,每壓入一個新的元素,都需要把之前堆棧里的所有元素整體下移動一個元素的位置,騰出棧頂元素的位置讓新的元素進來,這種平移可是一筆不小的開銷啊!但是并不是說“無底洞”模型就沒辦法實現了,其實它可以通過第一種模型來模擬的,每需要壓入一個新的元素的時候,就先開辟一個空間,數據存入這個空間,然后再修改棧頂元素指針使其指向這個新的棧頂元素。

      換句話說,用鏈表的話,只要有足夠的空間可開辟出來作為一個節點,那么兩種堆棧模型都能實現(當然“無底洞”型還是如我上面說的那樣用第一種模擬出來的,否則平移的工作量相當可觀),如果用數組,由于數組在內存中是連續分配出來的空間,用第一種模型更自然一些。

    (審核編輯: 滄海一土)

    聲明:除特別說明之外,新聞內容及圖片均來自網絡及各大主流媒體。版權歸原作者所有。如認為內容侵權,請聯系我們刪除。

    主站蜘蛛池模板: 国产91在线 | 日本 | 国产大片91精品免费观看不卡 | 欧美日韩国产一区二区 | 久久久精品久久久久久久久久久 | 久操视频免费看 | 久久久久女人精品毛片九一 | 精品国产一区二区三区2021 | 日韩欧美制服 | 黄a免费 | 国产成人精品视频在放 | 亚洲欧美日韩一区 | 亚洲国产精品久久久久666 | 91情侣在线偷精品国产 | 欧美日韩精品 | 欧美韩日| 国产一区亚洲二区三区毛片 | 麻豆国产成人精品午夜视频 | 国产欧美日韩在线播放 | 91久久精品国产91久久性色也 | 精品视频一区二区三区四区五区 | 国产一级一级一级成人毛片 | 国产三级一区 | 欧美日韩国产色 | 欧美日韩视频一区三区二区 | 日本欧美在线 | 国产精品成人久久久久 | 亚洲欧美另类日本 | 国产欧美91 | 国产精品久久久久a影院 | 久久艹精品 | 国产成人久久蜜一区二区 | 视频精品一区二区三区 | 99久久免费精品国产免费高清 | 一级毛片一级毛片一级毛片 | 日产精品久久久一区二区 | 热久久国产欧美一区二区精品 | 在线观看网站国产 | 免费一级毛片 | 欧美一区精品二区三区 | 女人与公拘交酡全过程 | 精品亚洲一区二区 |