////////////////////////////////////////////////////////////////////////////////
更多原创“uC/OS-II学习笔记之:系列”基础及嵌入式相关知识详解,请访问可乐虎博客:
相信不会让您失望!! ////////////////////////////////////////////////////////////////////////////////
//顺序栈的C语言实现
//大家请看最后用两种方式实现的main函数
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#define TRUE 1
#define FALSE 0
#define STACK_SIZE 5
typedef int ElementType;
//定义结构体
typedef struct SeqStack
{
ElementType array[STACK_SIZE];
ElementType top;
}SEQSTACK;
//……与问题无关的函数代码均已省略……
//情况1
int 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;
}
/*
//情况2
int 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的运行结果是一样的。