////////////////////////////////////////////////////////////////////////////////
更多原創“uC/OS-II學習筆記之:系列”基礎及嵌入式相關知識詳解,請訪問可樂虎部落格:
http://blog.csdn.net/dcx1205
相信不會讓您失望!!////////////////////////////////////////////////////////////////////////////////
//順序棧的C語言實現//大家請看最後用兩種方式實現的main函數#include <stdio.h>#include <math.h>#include <stdlib.h> #define TRUE 1#define FALSE 0#define STACK_SIZE 5typedef int ElementType; //定義結構體typedef struct SeqStack { ElementType array[STACK_SIZE]; ElementType top;}SEQSTACK; //……與問題無關的函數代碼均已省略……//情況1int main(void){ SEQSTACK *pS;//定義一個指向結構體變數的指標 pS = (SEQSTACK *)malloc(sizeof(SEQSTACK)); if (pS == NULL) { return FALSE; } InitStack(pS);//初始化 PushStack(pS, 1);//壓棧 PushStack(pS, 2); PushStack(pS, 3); PushStack(pS, 4); PushStack(pS, 5); TraStack(pS);//遍曆棧 free(pS);//釋放pS所佔記憶體空間 return 0;}/*//情況2int main(void){ SEQSTACK STK;//定義一個結構體類型的變數 SEQSTACK *pS;//定義一個指向結構體變數的指標 pS = &STK;//將結構體變數的地址賦給指標 //下面函數的參數使用pS和&STK是等效的 InitStack(pS);//初始化 PushStack(&STK, 1);//壓棧 PushStack(pS, 2); PushStack(&STK, 3); PushStack(pS, 4); PushStack(&STK, 5); TraStack(pS);//遍曆棧 return 0;}*///請問情況1和2有什麼區別啊?//是情況1好還是2好?為什麼呢?//註:情況1和2的運行結果是一樣的。