1樓:
1. 因為方便,畢竟在棧中弄一塊資料只要給esp加點數字就行了,區域性變數不值錢。堆就麻煩多了。
2. 對。這是資料棧的一個內建實現。但是你對區域性變數的理解有誤區,
區域性變數訪問靠的是ebp暫存器,如果你反彙編就會看到進入一個函式首先會:
push ebp // 儲存ebp
mov ebp,esp // 將ebp用來指向函式棧區開頭
sub esp,xxh // 初始化區域性變數
函式棧區是我自己的叫法,不過要記得若是棧訪問超出了這個區域那程式肯定錯了。
然後訪問a和b用的是[ebp-n]比如,[ebp-4]可能就指向你的a。
明白了吧,esp和ebp都是暫存器,esp是32位棧暫存器,會跟著push和pop操作變化值,也就是通常的資料棧實現中的那個頂部指標。ebp是基址暫存器,常年打醬油所以經常被這麼用。
上面那傢伙是怎麼混到15級的 =.=
2樓:匿名使用者
1、這沒有為什麼,c語言它就規定區域性動態變數用完就銷燬,所以在系統中專門劃一塊區域放這類變數。
2、這個棧不需要後進先出,它只滿足“棧”的“只能在一端(稱為棧頂(top))對資料項進行插入和刪除”這個性質,你可以在不把其他元素出棧的前提下就直接訪問棧底元素。
c語言棧是什麼,棧在哪,需要定義嗎?
3樓:我要鬥爭到死
棧是一種資料結構,後進先出,即最後進入棧的資料最先彈出。
c語言中沒有棧這種資料型別,需要自己程式設計構建。
4樓:匿名使用者
“棧”是一種後進先出(lifo,或叫先進後出filo)的資料結構。這是資料結構的範疇。
您所說的棧,是由作業系統負責管理的一段棧空間,在遞迴、子程式呼叫等處應用廣泛。這是作業系統的範疇。
——並不是在c語言範疇討論的概念。
5樓:匿名使用者
推薦你看下軟體技術基礎比較基礎的東西 其實就是一個資料結構
6樓:匿名使用者
你知道什麼是資料結構嗎?d,r,p
虛擬作業系統與物理作業系統的區別
虛擬機器是虛擬的真實計算機硬體系統,在虛擬機器裝系統是跟實體機是一樣的,但是有些地方不同,例如虛擬機器是虛擬驅動,而實體機則是一些具體的驅動,像dell的或其他品牌驅動。用虛擬機器學習unix是不錯的選擇,既節省了新電腦的開支,還節省了電費。但是方便性不如實際中的unix系統的實體機了。作業系統課程...
作業系統的分類與區別,作業系統的分類
目前市面上主流作業系統就是windows xp 和 win7 區別的話我還不是很清楚 大類 個人作業系統 伺服器作業系統 大型機作業系統 嵌入式作業系統個人作業系統 使用在個人家庭 辦公電腦上的os,如windows xp windows vista windows 7 ubuntu macos等。...
linux作業系統中chown命令
常用chown後面跟那個是使用者或組名,chown virtual virtual etc ftp file1即代表將file1檔案設定為屬於virtual組和virtual使用者。我記得是分號吧 不知道逗號啥意思 chown virltual virtual etc ftp file1 起個分隔的...