做实验的时候,想使用函数来对指向栈的指针初始化,下面是我写的初始化代码:
typedef struct {
int data[MAXSIZE];
int top;
}SeqStack;
/*初始化栈*/
void Init_Seqstack(SeqStack *s)
{
s=new SeqStack;
s->top=-1;
}
/*主函数*/
int main()
{
//创建并且初始化栈
SeqStack *s;
Init_Seqstack(s);
return 0;
但是无法运行程序,用debug调试了一下,发现s->top=-1
无法执行,按照常理来说,传入一个指针,在函数中开辟内存,并且对其初始化,应该是没问题的,但是运行确实出错了。问了一下老师,主要就是C++不支持这种写法,将指针作为实参之前,一定要给指针开辟空间。
修改后:
typedef struct {
int data[MAXSIZE];
int top;
}SeqStack;
/*初始化栈*/
void Init_Seqstack(SeqStack *s)
{
s->top=-1;
}
/*主函数*/
int main()
{
//创建并且初始化栈
SeqStack *s=new SeqStack;
Init_Seqstack(s);
return 0;
或者:
typedef struct {
int data[MAXSIZE];
int top;
}SeqStack;
/*初始化栈*/
SeqStack *Init_Seqstack()
{
SeqStack *s=new SeqStack;
s->top=-1;
return s;
}
/*主函数*/
int main()
{
//创建并且初始化栈
SeqStack *s=Init_Seqstack(s);
return 0;