c/c++编程时出现的错误,哪位大虾给给看看如何解决??谢!

出错代码:S->base=(SElemType*)malloc((STACK_INIT_SIZE*sizeof(SElemType)));#include<stdio.h... 出错代码:
S->base = (SElemType*)malloc((STACK_INIT_SIZE * sizeof(SElemType)));
#include <stdio.h>
//#include<stdlib.h>
#include<stdlib.h>
#define TURE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
#define SElemType int
//#define Status int
typedef struct Stack{
SElemType * base;
SElemType * top;
int stacksize;
}Stack,*SqStack;
int InitStack(SqStack S){
//创建一个空栈S
S->base = (SElemType*)malloc((STACK_INIT_SIZE * sizeof(SElemType)));
if( !S->base ) exit( OVERFLOW ); //分配内存失败
S->top = S->base;
return OK ;
}//InitStack
int GetTop(Stack S , SElemType* e ){
//若栈不空,则用e返回S的栈顶元素,并返回OK ,否则返回REEOR
if( S.top = S.base ) return( ERROR );//空栈
*e = *(--S.top) ;
return OK ;
}//GetTop
展开
 我来答
百度网友a54624c
2013-03-29 · TA获得超过538个赞
知道小有建树答主
回答量:163
采纳率:100%
帮助的人:99.1万
展开全部
把sizeof前的*改为逗号,malloc()函数有两个参数的,你这只有一个。
追问
那个是  realloc()函数吧??
追答
哦,不好意思,搞错了!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
mishalu2034
2013-03-29 · 超过14用户采纳过TA的回答
知道答主
回答量:31
采纳率:0%
帮助的人:30.6万
展开全部
S是局部变量吧
更多追问追答
追问
void conversion(){
//对输入的任意一个非负十进制整数,打印输出与其等值的八进制数
int N , e ;
N = 0 ;
SqStack a = 0 ;
InitStack( a );
scanf( "%d" , N );
while( N ){
Push( a , N%8 );
N = N/8 ;
}
while( a->base != a->top ){
Pop( a , &e );
printf( "%d ", e );
}
printf("\n");
} // conversion
追答
a只是一个指针,没有创建相应的结构体空间,哪来的a->base
应该这样:
Stack st;
SqStack a=&st;
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lchverygood
2013-03-29 · TA获得超过135个赞
知道答主
回答量:104
采纳率:0%
帮助的人:23.8万
展开全部
你把sizeof前置的指针符号 * 去掉
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jiayou_lee
2013-03-29 · 超过26用户采纳过TA的回答
知道答主
回答量:91
采纳率:0%
帮助的人:47.8万
展开全部
你是不是没有释放动态分配的内存啊?
追问
上面代码里的没有释放,想是等运行完系统自动收回......
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
nlxcbd
2013-03-29 · TA获得超过176个赞
知道小有建树答主
回答量:194
采纳率:0%
帮助的人:152万
展开全部
单看这一句代码没有问题!能不能再具体点。
追问
int Push(SqStack S , SElemType e){
//插入元素e 为新的栈顶元素
if( S->top - S->base == S->stacksize ){
//栈满 ,追加存储空间
S->base = ( SElemType* )realloc( S->base , ( S->stacksize + STACKINCREMENT ) * sizeof( SElemType ));
if( !S->base ) exit( OVERFLOW );
}
*( S->top++ ) = e ;
return OK ;
}//PUSH
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式