我一直在尝试用 c 在 dev c 上实现一个堆栈,这是我的代码
#include <stdio.h>
#include <stdlib.h>
#define stackinitsize 100
#define stackincrement 10
typedef struct {
char *base;
char *top;
int stacksize;
}sqstack,*s;
Status initstack(sqstack &s)
{
s.base=(char *)malloc(stackinitsize*sizeof(char));
if(!s.base) exit(OVERFLOW);
s.top=s.base;
s.stacksize=stackinitsize;
return OK;
}
void push(sqstack &s,char e)
{
if ((s.top-s.base)>=s.stacksize){
s.base=(char *)realloc(s.base,(s.stacksize+stackincrement)*sizeof(char));
if(!s.base) exit (OVERFLOW);
s.top=s.base+s.stacksize;
s.stacksize+=stackincrement;
}
*s.top++=e;
}
int main(int argc, char *argv[])
{
char e;
system("PAUSE");
return 0;
}
但它一直在说
error: syntax error before "s"
error: syntax error before '&' token
但是当我把它放在代码块上编译时,它说
error: expected ';', ',' or ')' before '&' token
有人有想法吗?
最佳答案
您似乎在使用引用传递,这是 C++ 的一个特性,而不是 C。
你不能在 C 的声明中使用 &
,当你想声明一个指针被传递时,你可以使用 *
(同样适用于 push
功能):
Status initstack(sqstack * s)
{
s->base=(char *)malloc(stackinitsize*sizeof(char));
if(!s->base) exit(OVERFLOW);
s->top=s->base;
s->stacksize=stackinitsize;
return OK;
}
但是请注意,与 C++ 的按引用传递不同,您不能通过赋值给 s
来更改传递给函数外部函数的参数,只能取消引用它。
关于c - '&' 标记之前的 dev c 堆栈语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12858094/