关于数据结构的栈,大神,帮忙看一下吧。该怎么解决

关于数据结构的栈,大神,帮忙看一下吧。
学数据结构 在栈的部分。
目的是将一个数转化为八进制,并输出。
不知道为什么总是输出为地址。
#include "cstdio"
#include "cstdlib"
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
typedef int SElemType ;
typedef struct{
    SElemType *base;
SElemType *top;
int stacksize;
}SqStack;

int InitStack(SqStack &S){
    S.base=(SElemType *)malloc(STACK_INIT_SIZE * sizeof(SElemType));
if(!S.base) return 0;
S.top=S.base;
S.stacksize = STACK_INIT_SIZE;
return 1;
}/*创造一个栈*/
int GetTop(SqStack S,SElemType &e){
    if(S.base = S.top) return 0;
e=*(S.top-1);   
return 1;
}/*得到栈顶元素*/
int Push(SqStack &S,SElemType e){
    if(S.top-S.base>=S.stacksize){ 
        S.base=(SElemType *)realloc (S.base,(S.stacksize + STACKINCREMENT)*sizeof(SElemType));
if(!S.base) return 0;{
S.top=S.base+S.stacksize;
        S.stacksize+=STACKINCREMENT;
}
}
*S.top=e;
S.top++;
    return 1;
}/*新加入一个元素e*/
int Pop(SqStack &S,SElemType &e){
    if(S.top=S.base) return 0;
e=*(S.top-1);
--S.top;
return 1;
}/*删除栈顶元素,并返回其值*/
int StackEmpty(SqStack &S){
    if(S.top==S.base) return 1;
else return 0;
}/*判断栈是否为空,如果是返回1*/
void conversion(){
int a;
int m;
SqStack S;
    InitStack(S);
scanf("%d",&a);
while(a){
            Push(S,a%8);
a=a/8;

while (!StackEmpty(S))
{
    int e;
    Pop(S,e);
        printf("%d",e);
}
}/*求一个数的八进制,并输出*/
void main(){
conversion();
system("pause");
}

------解决思路----------------------
20行和37行有两个等号错了,改过来好像就好了。
if(S.top=S.base)