1. 求大神精簡的講講c語言中棧的用法
堆棧用於特殊的數據存儲,一般用於函數調用,特點是先入後出。
在進行子程序(函數)調用時,它可以存儲調用時調用者給出的參數,子程序通過堆棧指針可找到所有傳入的參數,即使修改它們由於返回時設置堆棧指針也不會影響參數原型數據;子程序開設的普通變數也會在堆棧中開辟。
在進行中斷函數調用時,堆棧用於保護現場,可以將斷點處程序執行的關鍵寄存器壓棧保存,執行完後彈棧恢復現場。
堆棧的好處在於,cpu有專用的堆棧地址寄存器,壓棧、彈棧有專用語句,對於棧內數據存取以堆棧指針為參照存取方便,利於最後舍棄無需的數據。
2. 什麼是C語言中的棧
棧是一種數據存儲的結構,其實跟數組,隊列的存儲方式是一樣的,主要是它有存儲的規則,就是先進後出,只在棧定操作。
也就是說數據存入一個棧,取出的是最後一個存入的數據,必須從最後一個開始取。
可參考網路和維基網路
3. C語言棧是什麼,棧在哪,需要定義嗎
棧有兩種
一種是操作系統中的
進程棧
或者線程棧
系統自動生成
不需要定義
一種是數據結構中的
需要自己實現。
4. 那位大神能講下C語言中棧的使用啊
堆棧就是先入後出的數據結構。
如果用c語言來實現的話用個struct
先定義一個棧的節點
struct
node;
typedef
strcut
node
*
position;
typedef
position
stack;
stack
creat();
void
push(int,stack);
int
pop(stack);
int
top();
struct
node
{
int
element;
position
next;
}
stack
creat()
{
stack
s;
s=malloc(sizeof(struct
node));
s->next==NULL;
}
void
push(int
a,stack
s)
{
position
temp;
temp=malloc(sizeof(struct
node));
temp->element=a;
temp->next=s->next;:
s->next=temp;
}
int
pop(stack
s)
{
int
res=s->next->element;
position
temp=s->next;
s->next=temp->next;
free
temp;
}
int
top(stack
s)
{
return
s->next->element;
}
好啦,先creat()一個棧,再進行push
pop等。程序中忽略了麻煩的錯誤檢測給出了重點,當然還可以添加其他操作。。對了,頭文件也要加上。本人還是習慣用c++弄成一個類^_^
5. 在C語言中,什麼叫"棧"
棧是一種數據結構。
棧只允許訪問一個數據項即最後插入的數據項:即最後插入的數據項。移出這個數據項之後才能訪問倒數第二個插入的數據項,依此類推。即後進先出。放入是一種壓棧的過程;取出是一種彈棧的過程,彈棧的時候並刪除這個元素。
以我們生活中的桶裝薯片的例子可以說明這一點,當廠家在生產薯片的時候,要將薯片一片片的裝入食品桶中,這就是一個壓棧的過程。最先放的薯片將在食品桶的最底部。最後放的在食品桶的最上面。 當我們買到薯片,打開包裝,享受薯片給我們帶來的美味時,此時就是一個彈棧的過程,我們只能從最上面開始取出吃掉,然後再取下一片吃,直到將整盒薯片吃完。
6. C語言中的棧、堆是什麼
C語言中的堆和棧都是一種數據項按序排列的數據結構。
棧就像裝數據的桶或箱子
我們先從大家比較熟悉的棧說起吧,它是一種具有後進先出性質的數據結構,也就是說後存放的先取,先存放的後取。
這就如同我們要取出放在箱子裡面底下的東西(放入的比較早的物體),我們首先要移開壓在它上面的物體(放入的比較晚的物體)。
堆像一棵倒過來的樹
而堆就不同了,堆是一種經過排序的樹形數據結構,每個結點都有一個值。
通常我們所說的堆的數據結構,是指二叉堆。堆的特點是根結點的值最小(或最大),且根結點的兩個子樹也是一個堆。
由於堆的這個特性,常用來實現優先隊列,堆的存取是隨意,這就如同我們在圖書館的書架上取書。
雖然書的擺放是有順序的,但是我們想取任意一本時不必像棧一樣,先取出前面所有的書,書架這種機制不同於箱子,我們可以直接取出我們想要的書。
(6)c語言棧講解擴展閱讀:
關於堆和棧區別的比喻
使用棧就象我們去飯館里吃飯,只管點菜(發出申請)、付錢、和吃(使用),吃飽了就走,不必理會切菜、洗菜等准備工作和洗碗、刷鍋等掃尾工作,他的好處是快捷,但是自由度小。
使用堆就象是自己動手做喜歡吃的菜餚,比較麻煩,但是比較符合自己的口味,而且自由度大。
參考資料來源:網路-堆棧
7. 什麼是C語言中的棧
棧是個數據結構,指數據的後進先出的方法。c語言可以編寫這種數據結構。另外在c中參數的傳遞實際上也是入棧和出棧的過程。如果不明白,建議看一下數據結構中對棧的講解。
8. c語言中棧的定義
保存數據之用,先壓棧最後出棧,不要與系統關鍵字同名就OK
9. C語言中"棧"和"堆"怎麼理解
堆(heap)和棧(stack)有什麼區別??
簡單的可以理解為:
heap:是由malloc之類函數分配的空間所在地。地址是由低向高增長的。
stack:是自動分配變數,以及函數調用的時候所使用的一些空間。地址是由高向低減少的。
一個由c/C++編譯的程序佔用的內存分為以下幾個部分
1、棧區(stack)—
由編譯器自動分配釋放
,存放函數的參數值,局部變數的值等。其操作方式類似於數據結構中的棧。
2、堆區(heap)
—
一般由程序員分配釋放,
若程序員不釋放,程序結束時可能由OS回收
。注意它與數據結構中的堆是兩回事,分配方式倒是類似於鏈表。
10. C語言中的棧和堆是什麼
1、計算機中的內存分為兩部分:一部分是棧(stack,也稱堆棧),另一部分是堆(heap)。
2、 棧,可以看作是一摞卡片,最上面的卡片表示程序的當前作用域,這往往就是當前正在執行的函數。
3、堆,一段完全獨立於當前函數或者棧幀的內存區。如果一個函數中聲明了一些變數,而且希望當這個函數完成時其中聲明的變數仍然存在,就可以將這些變數置於堆中。