談一下我學習棧的時候一點點心得
阿新 • • 發佈:2019-01-01
剛開始學習C語言的時候,對於什麼棧、堆之類的根本就沒有概念,分不清楚,後來在學習資料結構的時候遇到了一定的困難,我就向同學進行了請教,並且上網查找了一些資料,算是有了一些初讀的瞭解和認識,今天和大家晒一晒 :
我們軟體學院的同學,棧是一個不可忽視的概念,我們以後寫的C語言程式基本上都要用的上,在我剛開始接觸的時候,對於我來說就是一個很模糊的概念,只知道是一種資料結構,用來存放資料,但是要我說出它和堆的區別,當時的我還是說不出來的。
棧,是一種資料項按序列的資料結構。它具有先進後出的性質,就好比我們在箱子裡面放東西,東西就是我們想要存放的元素,箱子就是棧,我們先放進去的東西,會被放在下面,後被放進去的東西會放在上面,這樣,當我們想要拿東西的時候,就要想從上面開始拿, 這就是先進後出,最先放進去的,要最後才能拿出來;再舉個例子,手槍的彈夾大家都知道,我們把子彈壓進彈夾,最上面的一顆子彈,是我們最後發那個進去的那一個,但是他是第一個出來的,就是這樣。
這是我在網上找到的一個圖,要說一下C語言程式記憶體分配中的棧,先要把記憶體的分配也解釋一下,一般情況下程式存放在Rom或Flash中,執行時需要拷到記憶體中執行,記憶體會分別儲存不同的資訊,就如上圖所示。
棧,是系統自動分配的,等你們學到堆以後,就會發現棧和堆的不同,堆是要你自己去開闢的,另外,他們存放的東西也不同。
好了, 只是簡單的給你們介紹一下,免得你們以後學到的時候疑惑,效仿一下大東,給你們留一個作業,寫出堆和棧分別儲存什麼樣的資料,然後上網查詢一下有關對的相關知識,然後發到老地方,命名規則照舊。
加油,我的小幹事們。