强奸久久久久久久|草草浮力在线影院|手机成人无码av|亚洲精品狼友视频|国产国模精品一区|久久成人中文字幕|超碰在线视屏免费|玖玖欧洲一区二区|欧美精品无码一区|日韩无遮一区二区

首頁 > 資訊 > 問答 > 堆棧指針,堆棧指針的過程用文字描述

堆棧指針,堆棧指針的過程用文字描述

來源:整理 時間:2023-08-19 06:13:56 編輯:智能門戶 手機版

本文目錄一覽

1,堆棧指針的過程用文字描述

堆棧有兩個指針,一個用來標記堆棧的底部。一個用來標記新加入元素的位置,增加一個元素,這個指針就上移一個單元,反之下移,直至與堆棧底部指針所指單元相等時,堆棧為空。當所指位置與底部指針所指位置元素個數(shù)等于指定最大個數(shù)時,棧滿

堆棧指針的過程用文字描述

2,堆棧指針的運作

指針向下移就表示是入棧 入棧了當然會創(chuàng)建新的內(nèi)存了 向上移那就是出棧 就釋放出棧的那個內(nèi)存
向下移動,就是SP+1,會在new一個內(nèi)存單元;向上移動,SP-1,就把SP指向的單元dele掉。

堆棧指針的運作

3,關(guān)于 堆棧指針的問題

兩種思路考慮: 1,正向思考 如果棧為空,則棧頂指針也應該指向數(shù)組的外面。 如果兩個棧里面的元素都是1的時候,你的答案就是正確的了。 2,逆向思考 棧頂指針指向是是棧的top元素。 如果棧為空,棧頂指針應該不指向任何有效元素。 如果棧里面的元素是1的話,top[1] = 1; 因為return stack[top[1]]恰好就是數(shù)組的第一個元素。 這應該是題意要求的。 反之,假設LZ的答案是正確的。 棧空的時候,top[1] = 1; 那么棧有一個元素的時候,棧頂指針++,top[1] = 2;這就浪費了數(shù)組的一個存儲空間了。

關(guān)于 堆棧指針的問題

4,單片機中堆棧指針的作用A指明棧底的位置 B指明棧頂?shù)奈恢?C

選擇B。堆棧指針主要用來保存臨時數(shù)據(jù)、局部變量和中斷/ 子程序的返回地址。棧頂?shù)奈恢糜蓷V羔楽P指出。
你好!選擇B。堆棧指針主要用來保存臨時數(shù)據(jù)、局部變量和中斷/ 子程序的返回地址。棧頂?shù)奈恢糜蓷V羔楽P指出。如果對你有幫助,望采納。
答案B 堆棧指針SP存放的是堆棧區(qū)的地址。假設SP剛開始存放的是30H,那么執(zhí)行PUSH direct 的時候,把direct地址所指示的存儲器單元的數(shù)據(jù)壓入(SP)←(SP)+1(此時sp先進行加一)也就是31H(存儲器單元地址),這時如果還有數(shù)據(jù)要壓入堆棧區(qū),就依次執(zhí)行,即放入32H,33H中,當放到33H的時候,此時SP中的值就是33H,就是SP指向33H存儲器單元。此時如果有指令POP direct ,則從33H開始取出數(shù)據(jù),然后SP自減一,再取出下一條。因此,此時所說的棧頂就是堆棧區(qū)地址中最大的數(shù),指到33H的時候,就是33H,取出33H中的數(shù)據(jù)后,棧頂就是32H。

5,什么是堆棧指針如何理解堆棧指針

堆棧指針有以下特點:在堆上分配空間,即指向堆空間堆上分配的最大空間是4G好像沒有其它特點了 ^_^
堆棧是一個抽象數(shù)據(jù)類型,規(guī)定的兩項必備的基本操作分別為入棧和出棧。這個抽象數(shù)據(jù)類型并沒規(guī)定入棧與出棧具體要怎么實現(xiàn)。你問的問題已經(jīng)在實現(xiàn)這一層面 上,所以按照堆棧這種抽象數(shù)據(jù)類型的規(guī)定看,“先修改指針,然后插入數(shù)據(jù),出棧時剛好相反”并不是必須的,這取決于你的操作的具體實現(xiàn)。 如果你的堆棧的實現(xiàn)是往上長的(就是說往頂?shù)姆较蜷L,其實質(zhì)是你的棧底是定死的不能動,入棧的東西只能不斷往上疊,這就像你在書桌上放書一樣,桌 底是定死的,所以你的書只能一本一本地往上堆,往上長),計算機內(nèi)部的堆棧的實現(xiàn)采取的就是這種模式,所以就得像你說的那樣,“先修改指針,然后插入數(shù) 據(jù),出棧時剛好相反”,因為你堆棧指針指向的總是棧頂元素,棧底不能動,所以數(shù)據(jù)入棧前要先修改指針使它指向新的空余空間然后再把數(shù)據(jù)存進去,出棧的時候 自然相反,你聯(lián)系我上面舉的放書的例子仔細想想。 然而,如果你的堆棧的實現(xiàn)是往下長的(就是說你每壓一個元素入棧,棧底就自動下移一個元素的位置,其實質(zhì)就是這種堆棧模型是一個“無底洞”型), 這個時候,你的棧頂就變成了定死的,你就可以先壓入元素,然后再修改指針。因為你的棧底是無限的,你壓入一個元素,新的元素就取代先前的棧頂元素占據(jù)棧頂 的位置,那么你先前的指向棧頂元素的指針這個時候就該修改讓它指向這個新的棧頂元素了。 下面的就是對“無底洞”型堆棧的一種實現(xiàn)的描述: 壓棧(入棧):將對象或者數(shù)據(jù)壓入棧中,更新棧頂指針,使其指向最后入棧的對象或數(shù)據(jù)。 彈棧(出棧):返回棧頂指向的對象或數(shù)據(jù),并從棧中刪除該對象或數(shù)據(jù),更新棧頂。 話說回來,計算機內(nèi)部肯定選第一種模型,不會選第二種,因為第二種模型,每壓入一個新的元素,都需要把之前堆棧里的所有元素整體下移動一個元素的 位置,騰出棧頂元素的位置讓新的元素進來,這種平移可是一筆不小的開銷啊!但是并不是說“無底洞”模型就沒辦法實現(xiàn)了,其實它可以通過第一種模型來模擬 的,每需要壓入一個新的元素的時候,就先開辟一個空間,數(shù)據(jù)存入這個空間,然后再修改棧頂元素指針使其指向這個新的棧頂元素。 換句話說,用鏈表的話,只要有足夠的空間可開辟出來作為一個節(jié)點,那么兩種堆棧模型都能實現(xiàn)(當然“無底洞”型還是如我上面說的那樣用第一種模擬出來的,否則平移的工作量相當可觀),如果用數(shù)組,由于數(shù)組在內(nèi)存中是連續(xù)分配出來的空間,用第一種模型更自然一些

6,匯編語言中的堆棧段指針是干什么的

匯編語言中的堆棧段指針是用來保存臨時數(shù)據(jù)、局部變量和中斷/調(diào)用子程序程序的返回地址。堆棧指針總是指向棧頂元素。在51系列單片機中,堆棧是向上生長的,所以數(shù)據(jù)入棧的時候,堆棧指針先加1,再壓棧。出棧的時候先彈出數(shù)據(jù),堆棧指針再減1。但在AVR單片機中,堆棧是向下生長的,數(shù)據(jù)入棧時指針將減1,數(shù)據(jù)出棧時指針將加1。
堆棧是用來存儲數(shù)據(jù)的,例如某個寄存器里面的數(shù)值或地址。堆??梢岳斫獬梢粋€倉庫,這個倉庫里有很多格子,每個格子里放一個東西,每個格子都有一個編號。堆棧指針就是用來查找格子編號的,假設現(xiàn)在堆棧里有10個格子,編號依次是0,1,2,3,4,5,6,7,8,9,如果現(xiàn)在堆棧指針是5,那么就對應5號格子里的內(nèi)容(數(shù)據(jù)或地址)
堆棧段指針(寄存器SS)是用于確定堆棧在內(nèi)存中的起始位置的寄存器;堆棧段寄存器的作用和其他段寄存器(CS,DS,ES)相同,都是為了在一整段的內(nèi)存中劃分區(qū)域:由于內(nèi)存為一整段儲存單元,CS(代碼段寄存器)中存放代碼段的起始位置,DS(數(shù)據(jù)段寄存器)中存放數(shù)據(jù)段的起始位置,SS(堆棧段寄存器)中存放堆棧段的起始位置,ES(附加段寄存器)中存放附加段的起始位置。  在操作系統(tǒng)架構(gòu)的內(nèi)存中,堆棧位于程序所使用內(nèi)存的頂端,向內(nèi)存低地址處擴展,DS寄存器中存放的是堆棧最低的地址。堆棧本身為內(nèi)存的一部分,但是相對普通內(nèi)存段(DS)的區(qū)別在于:普通內(nèi)存段(DS)一般用于存放長久數(shù)據(jù),無特殊存儲順序;堆棧內(nèi)存段(SS)一般用于存放暫時數(shù)據(jù)(例如調(diào)用函數(shù)是的參數(shù)),可以使用PUSH,POP指令向棧頂壓入,彈出數(shù)據(jù)?! ×硗?,若SP(棧頂寄存器)中的值小于DS寄存器(PUSH指令執(zhí)行過多次)將會引發(fā)錯誤:系統(tǒng)顯示某某程序Stack Overflow(因為SS段往下的內(nèi)存地址屬于數(shù)據(jù)段的區(qū)域)。若SP中的值大于一定程度(由程序的堆棧段大小決定)(POP指令執(zhí)行過多),也將會引發(fā)錯誤:系統(tǒng)顯示某某程序Access Violation Reading Address(因為程序內(nèi)存的頂端上有著其他數(shù)據(jù))?! ⌒枰⒁獾氖牵谳^新的操作系統(tǒng)下匯編其平臺下的程序時,程序員將無法修改段寄存器中的值(修改會報錯),它們由操作系統(tǒng)自身管理(可以理解為由操作系統(tǒng)編寫者的代碼管理),其原因是出于安全起見。
16位匯編下堆棧段SS寄存器是表示一個堆棧的基址,實際地址是(ss)*16+(sp)=物理地址,這個是當前對戰(zhàn)指針指向的實際地址。
堆棧段是保存數(shù)據(jù)的esp就是地址指標器push eax時,esp-4pop eax時,esp+4程序調(diào)用call時會執(zhí)行壓棧操作,保存 下一條指令地址返回時會執(zhí)行出棧操作,取出 上面保存的地址 放到 PC繼續(xù)執(zhí)行。當然自己也可以執(zhí)行入棧,出棧操作,保存寄存器狀態(tài)等 甚至可以當作數(shù)據(jù)段 使用,保存臨時變量等
文章TAG:堆棧指針堆棧指針的過程用文字描述

最近更新

  • 石墨的結(jié)構(gòu),石墨結(jié)構(gòu)如何石墨的結(jié)構(gòu),石墨結(jié)構(gòu)如何

    石墨結(jié)構(gòu)如何2,石墨結(jié)構(gòu)是什么3,石墨是什么是有什么組成的4,石墨結(jié)構(gòu)是5,石墨晶體是層狀結(jié)構(gòu)如圖以下有關(guān)石墨晶體的說法正確的一組是6,石墨是什么狀結(jié)構(gòu)的7,為什么石墨板遇硝酸會腐蝕石墨板.....

    問答 日期:2023-08-19

  • 鋰鹽,鋰鹽是鹽嗎鋰鹽,鋰鹽是鹽嗎

    鋰鹽是鹽嗎2,含鋰鹽的食品有哪些3,金屬鋰鹽化學成分4,鋰鹽和鐵鹽的凈水作用分別是什么5,鋰鐵磷酸鹽和鋰鹽是一種東西嗎6,鋰鹽對人體有害嗎1,鋰鹽是鹽嗎鹽的定義是金屬離子和酸根離子結(jié)合,有一.....

    問答 日期:2023-08-19

  • 電機結(jié)構(gòu),電動機的基本構(gòu)造電機結(jié)構(gòu),電動機的基本構(gòu)造

    電動機的基本構(gòu)造2,三相異步電動機的結(jié)構(gòu)主要包括哪兩種3,電機的結(jié)構(gòu)原理4,直流電機有哪幾部分組成5,電機由什么組成6,三相異步電動機的結(jié)構(gòu)1,電動機的基本構(gòu)造定子和轉(zhuǎn)子2,三相異步電動機的.....

    問答 日期:2023-08-19

  • 可口可樂銷量數(shù)據(jù)可口可樂銷量數(shù)據(jù)

    可口可樂,迫切需求可口可樂近五年銷售額可口可樂占世界飲料銷售額的44%可口可樂擁有超過200億美元的商標價值,可口可樂占世界飲料銷售額。請問有誰知道百事可樂和可口可樂最近5-10年銷量.....

    問答 日期:2023-08-19

  • 時控開關(guān)怎么調(diào)時間,微電腦時控開關(guān)怎么調(diào)RMD5型上海人民電力電器有限公司時控開關(guān)怎么調(diào)時間,微電腦時控開關(guān)怎么調(diào)RMD5型上海人民電力電器有限公司

    微電腦時控開關(guān)怎么調(diào)RMD5型上海人民電力電器有限公司2,nkg3時控開關(guān)怎么定時間3,時控開關(guān)怎么調(diào)時間4,時控開關(guān)怎么設置5,kg316t微電腦時控開關(guān)怎么調(diào)時間6,天正時控開關(guān)的操作方法1,微電腦.....

    問答 日期:2023-08-19

  • 電子貨架,電子產(chǎn)品倉庫應該用什么貨架電子貨架,電子產(chǎn)品倉庫應該用什么貨架

    電子產(chǎn)品倉庫應該用什么貨架2,電子標簽貨架作用和優(yōu)勢3,電子貨柜和懸掛式貨架是什么4,電子貨架是什么他的運作流程是什么5,使用電子貨架標簽有什么好處6,電子貨架標簽系統(tǒng)的基本介紹1,電子產(chǎn).....

    問答 日期:2023-08-19

  • 無功功率補償,無功功率補償是什么意思無功功率補償,無功功率補償是什么意思

    無功功率補償是什么意思2,無功功率的無功補償3,節(jié)電器的無功率補償?shù)脑硎鞘裁?,什么是無功補償5,無功功率補償原理6,無功補償?shù)难a償方式是什么有哪些優(yōu)缺點7,什么是無功功率補償8,什么是無.....

    問答 日期:2023-08-19

  • 電動勢,什么是電動勢電動勢,什么是電動勢

    什么是電動勢2,什么叫電動勢3,什么是電動勢4,什么是電動勢5,什么是電動勢6,什么是電動勢1,什么是電動勢電動勢是一個表征電源特征的物理量。定義為把單位正電荷從負極通過電源內(nèi)部移到正極時.....

    問答 日期:2023-08-19