|
#include<stdio.h>
#include<stdlib.h>
typedef struct{
int *base;
int *top;
}SqStack;
Push(SqStack *s,int x){
*(s->top)=x;
s->top++;
}
int Pop(SqStack *s){
s->top--;
return *s->top;
}
int main(){
int n,m;
SqStack *Stack;
Stack->base=(int*)malloc(30*sizeof(int));
Stack->top=Stack->base;
printf("please input a number:\n");
scanf("%d",&n);
while(n){
Push(Stack,n%2);
n=n/2;}
while(Stack->top!=Stack->base){
m=Pop(Stack);
printf("%d",m);
}
printf("\n the end \n");
}
编译能够通过,但是运行的时候提示段错误,用gdb跟踪发现到Stack->base=(int*)malloc(30*sizeof(int));的时候出现了错误,malloc和结构体指针这样使用应该是没有问题的啊,但是为什么会出现段错误呢? |
|