dev_cpp中函数参数为引用,编译不通过,怎么回事,帮忙解释一下
程序源代码如下:#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
#define OVERFLOW -2
#define OK 1
#define ERROR 0
typedef struct{
int *base;
int *top;
int stacksize;
}Sqstack;
int InitStack(Sqstack &s){
//构造一个空栈s
s.base = (int *)malloc(STACK_INIT_SIZE * sizeof(int));
if(!s.base) exit(OVERFLOW);
s.top = s.base ;
s.stacksize = STACK_INIT_SIZE ;
return OK ;
}//InitStack
int GetTop(Sqstack s,int &e){
//若栈不空,则用e返回s 的栈顶元素,并返回OK,否则返回ERROR
if(s.top == s.base) return ERROR;
e=*(s.top-1);
return OK;
}//Getop
int Push(Sqstack &s,int e){
//插入元素e为新的栈顶元素
if(s.top-s.base>=s.stacksize){//栈满,追加存储空间
s.base = (int *)realloc(s.base,(s.stacksize + STACKINCREMENT)*sizeof(int));
if(!s.base) exit(OVERFLOW);
s.top = s.base + s.stacksize ;
s.stacksize += STACKINCREMENT ;
}
*s.top++ = e;
return OK ;
}//Push
int Pop(Sqstack &s,int &e){
//若栈不空,则删除s的栈顶元素,用e返回其值,并返回OK;否则返回ERROR
if(s.base==s.top) return ERROR ;
e = *--s.top;
return OK ;
}//Pop
int main(int argc, char *argv[])
{
int *f;
size_t size ;
int i,e=0;
Sqstack s1,s2;
InitStack(s1);
InitStack(s2);
f = (int *)malloc(STACK_INIT_SIZE * sizeof(int));
if(!f) exit(OVERFLOW);
size = _msize(f);
printf("size : %d \n ",size);
Push(s1,2);//2入栈
Pop(s1,e); //出栈
printf("::::%d\n",e);
printf("Hello World !\n");
system("PAUSE");
return 0;
}
编译时有以下错误:
19 D:\C++编程\lk\数据结构\main.c syntax error before '&' token
D:\C++编程\lk\数据结构\main.c In function `InitStack':
21 D:\C++编程\lk\数据结构\main.c `s' undeclared (first use in this function)
...
一下类似,省略。
这种加取地址符的方法在VC6.0中可以,在dev_cpp里不行,哪位可以解释一下?怎么解决?谢谢!