关于C++中的栈创建的问题

来源:百度知道 编辑:UC知道 时间:2024/06/15 21:32:50
# include "iostream.h"
# include "stdlib.h"
# define STACK_INIT_SIZE 100
# define STACK_INCREASE 10
# define NULL 0
typedef struct{
int* top;
int* base;
int stacksize;
}*STACK,stack;
void InitStack(stack& s){
s.base=(int*)malloc(STACK_INIT_SIZE*sizeof(int));
s.top=s.base;
s.stacksize=STACK_INIT_SIZE;
}
void main(){
stack s;
InitStack(s);

} 可以
# include "iostream.h"
# include "stdlib.h"
# define STACK_INIT_SIZE 100
# define STACK_INCREASE 10
# define NULL 0
typedef struct{
int* top;
int* base;
int stacksize;
}*STACK,stack;
void InitStack(STACK& s){
s->base=(int*)malloc(STACK_INIT_SIZE*sizeof(int));
s->top=s->base;
s->stacksize=STACK_INIT_SIZE;
}
void main(){
STACK s;
InitStack(s);

}不可以,能通过编译但一运行就出错。

以上两个程序就差别在s的定义上,其他都一样,请高手指教我一下

第二个例子中的s是一个指针,并未分配内存,这样就没问题了。
void main(){
STACK s = (STACK)malloc(sizeof(stack));
InitStack(s);
//free(s->base);
//free(s);
}

STACK& s
stack& s
InitStack(STACK& s)
void InitStack(stack& s)

你搞清楚没?看看你传递的参数?