刚学到第十章程序结构,首次碰到栈的概念。看不懂此例
#define STACK_SIZE 100
char contents[STACK_SIZE];
int top = 0;
void make_empty(void)
{
top = 0;
}
int is_empty(void)
{
return top==0;
}
int is_full(void)
{
return top==STACK_SIZE;
}
void push(int i)
{
if (is full()==STACK_SIZE)
stack_overflow();
else
contents[top++]=i;
}
int pop(void)
{
if (is_empty())
stack_underflow();
else
return contents [--top];
}
请问,stack_overflow()以及stack_underflow(),是什么函数?做什么用的?为什么突然蹦出来而书中并未解释说明?
栈溢出的意思,overflow上溢,underflow下溢,这是错误处理函数,内部可能调用exit(1)等指令退出。举例如栈底层用容量为10的数组实现,如果size为0即栈空,调用pop则下溢,size为10即栈满,调用push则上溢。
stack_overflow()就是栈溢出
stack_underflow()就是栈下溢
多背单词或者用有道
看看栈的结构再看代码
frist in last out
一杯水你肯定先和上面再喝下面
一沓早餐饼干 一个饼干是一个塞进栈的成员 (stack.size(饼干袋子的容量)==max,是一定的)
更加精确的是 看看 动态内存管理,了解虚拟内存分布,自然就懂了 为什么会有栈下溢
我当时学习C++时候的理解和笔记 你可以看看
http://www.cnblogs.com/JN-PDD/p/6613985.html