68精品久久久久久欧美,最近中文字幕完整在线看一,久久亚洲男人天堂,最近中文字幕完整视频高清1

你好!歡迎來到深圳市穎特新科技有限公司!
語言
當前位置:首頁 >> 技術(shù)中心 >> 單片機入門 >> 單片機堆棧指針的理解

單片機堆棧指針的理解

關(guān)鍵字:單片機 堆棧 指針 作者:admin 來源:不詳 發(fā)布時間:2018-05-19  瀏覽:9

堆棧指針sp在片內(nèi)RAM128B中開辟棧區(qū),并隨時跟蹤棧頂?shù)刂。它是?quot;先進后出"的原則存取數(shù)據(jù)。開機復位后,單片機棧底地址為07H。

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

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

出棧的時候先彈出數(shù)據(jù),堆棧指針再減1。

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

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

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

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

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

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

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

編輯:admin  最后修改時間:2018-05-19

聯(lián)系方式

0755-82591179

傳真:0755-82591176

郵箱:vicky@yingtexin.net

地址:深圳市龍華區(qū)民治街道民治大道973萬眾潤豐創(chuàng)業(yè)園A棟2樓A08

Copyright © 2014-2023 穎特新科技有限公司 All Rights Reserved.  粵ICP備14043402號-4

高淳县| 鲁甸县| 上思县| 皋兰县| 闽清县| 泌阳县| 南川市| 清涧县| 中江县| 光泽县| 南开区| 罗城| 湘潭市| 平定县| 沁源县| 应城市| 密云县| 全南县| 潜江市| 盐山县| 汝州市| 富顺县| 承德县| 郎溪县| 汉源县| 平罗县| 象山县| 资中县| 桐梓县| 平利县| 寿阳县| 乐陵市| 綦江县| 黎平县| 涟源市| 高安市| 洞口县| 岢岚县| 泸西县| 大连市| 新源县|