力扣刷題做到乙個關於棧的題目,要求實現乙個棧,與常規棧不同的是,要求在常數時間內檢索到棧內的最小值
如下**:
#include #include #define maxsize 100
typedef struct minstack;
minstack* minstackcreate()
void minstackpush(minstack *obj, int x)
else
obj->top++;
obj->data[obj->top]=x;
}}void minstackpop(minstack* obj)
}int minstacktop(minstack* obj)
int minstackgetmin(minstack* obj)
void minstackfree(minstack* obj)
int main()
主要問題出在minstack* minstackcreate()這個函式內部,在函式內部定義了乙個指標,沒有申明指向,除錯時發現報錯「null pointer」,於是修改為:
minstack* minstackcreate()
還是一樣的報錯,空指標,然後想了一會修改為:
minstack* minstackcreate()
對了!
經過這幾次修改,明白了乙個問題:
在非主函式內申明乙個變數並且賦值(沒有用malloc的方式分配記憶體),在函式結束後,變數會自動銷毀。要想在非主函式內部申請乙個在函式執行結束後不會被銷毀的記憶體,就得用malloc方式?
C語言中關於函式的總結
函式意義 函式引數 函式設計原則 函式與巨集你覺不覺得c語言基礎知識概念在頭腦裡沒有形成知識體系?是否比較模糊比較亂?這就對了?我之前也是,有些知識點時間長了容易忘或者混淆,有些初學者抓不住重點覺得c語言複雜,難!實不相瞞,我也是這樣的感受,於是我想是時候整體的把c語言給好好的總結一下了,這樣形成乙...
c語言記憶體操作函式
一 malloc calloc 名稱 malloc calloc 功能 動態記憶體分配函式 標頭檔案 include h 函式原形 void malloc size t size void calloc size t num,size t size 引數 size 分配記憶體塊的大小 num分配記憶...
C語言 記憶體操作函式
1.memset 函式 進行記憶體的設定 設定的數要在0 255的範圍內 讀取設定的記憶體時要按字元讀取,也就是ascii碼表示。include include intmain printf n return0 2.memcpy 函式 針對記憶體進行複製 include include intmai...