高手!关于堆栈的有关问题

求助高手!关于堆栈的问题
一个c程序的代码如下:
#include<stdio.h>

char stack[512];
int top = 0;

void push(char c)
{
stack[top++] = c;
}

char pop(void)
{
return stack[--top];
}

int is_empty(void)/* 不知道这个函数是什么意思? */
{
return top == 0;
}

int main(void)
{
push('a');
push('b');
push('c');

while (!is_empty())/* 这里的判断条件是什么意思? */
putchar(pop());
putchar('\n');

return 0;
}
在这段代码里面,is_empty(void)函数表示什么意思?while(!is_empty())的判断条件是什么?
C语言

------解决方案--------------------
is_empty(void)返回如果不是0 ,putchar(pop());
------解决方案--------------------
if (empty)  return 1;
else return 0;
------解决方案--------------------
引用:
int is_empty(void)
{
     return top == 0;
}
代码里的这一段是什么意思?

返回  top是否等于0 是则返回true ,反之 返回false
------解决方案--------------------
这个看不懂,看函数名字应该也明白是什么意思吧