c 怎麼定義指定大小的堆疊,C 怎麼定義一個指定大小的堆疊?

2021-03-10 19:53:11 字數 1294 閱讀 2950

1樓:天使

c語言的堆疊我也沒用過。

不過c語言能自己定義個堆,用malloc函式,然後自己回寫幾個函式,模擬入棧堆疊。答

在彙編中,堆疊是通過暫存器內部地址指向,來定義棧頂的,大小未定義。

然後從這個棧頂開始,用push往棧裡新增(入棧),用pop往棧裡取出(出棧)。

具體的彙編指定舉例如下:

push ax //把暫存器ax的值壓入棧

pop ax //取棧的值,到暫存器ax中

而棧的地址則有ss、sp這兩個暫存器指定,棧沒有大小,要人工防止溢位。

具體c結合彙編,是一定能寫出一個堆疊的,不過可能比較麻煩,我也剛研究彙編,不是太懂。這裡只能給樓主一些思路。

2樓:罪惡欲都

自己實現結構體的定義和push,pop的方法一般是c語言,c++中提供了stl就是標準模板庫,裡面有常用的資料結構,棧、佇列、優先佇列等,建議c++使用stl。

3樓:小傻

c++定義一個bai指定大小的堆du

棧使用如下方

zhi式:

堆空間一般有操dao作系統的堆內

管理器來處理,棧

容空間一般是應用程式自動**管理的,以windows為例,每一個應用程式預設的堆和棧空間大小都為1m。使用者可以使用如下預處理命令指示連結器設定堆或者棧空間的大小。

#pragma ***ment(linker, "/stack:1024000000,1024000000")

/stack:[保留虛擬記憶體],[提交虛擬記憶體] ,這裡的大小都是位元組。所以上面的1024000000是位元組數。

4樓:忽忽上升

可以直接引用。

#include

stacks1(30);//定義一個30大小的int型棧

c++堆疊的各自大小,堆和棧的各自定義

5樓:匿名使用者

這裡的堆和棧不僅僅是按照資料結構裡的堆和棧來理解,更傾向於表示兩種不同作回用的記憶體區域答。

棧是有編譯器來管理的,具體的大小可能根據編譯器不同而異,編譯器也可以手動設定棧的大小,通常有1m和2m的,比如在你定義變數時,由編譯器將變數壓棧,作用域結束,編譯器控制變數出棧,程式設計師不能很直接的操作棧。

堆記憶體是向系統申請的記憶體,由程式設計師管理的,你new或者malloc時系統正常情況下回給你一塊堆記憶體空間,你愛什麼時候存資料都行,想存什麼就存什麼,想什麼時候釋放(delete,free)都可以。堆的大小沒有什麼具體數值,看機器的執行狀況,配置狀況而定。

c中怎麼定義字串陣列,C中怎麼定義字串陣列

方法一 string abc new string 3 abc 0 1 abc 1 2 abc 2 3 方法二 string abc new string 最笨的方法 string abc new string 4 abc 0 aaa abc 1 bbb abc 2 ccc abc 3 ddd st...

怎麼用c 生成指定隨機數

include include include using namespace std int main srand unsigned time null 初始化時間種子 int ret rand 3 產生 0 1 2 三種隨機數 int real pow 2,ret 2的0次方 1 2的1次方2 ...

c語言求怎麼判斷字母的大小寫c語言中如何辨別大小寫字母

c語言中,變數ch如果是一個char型別量,可以用以下的語句來進行判別大小寫 1 if ch a ch z printf c是一個大寫字母 n ch 2 if ch a ch z printf c是一個小寫字母 n ch 3 if ch 0 ch 9 printf c是一個數字字元 n ch 擴充套...