所以我试图实现某种形式的堆栈。这是我头文件中的定义:
struct tStack
{
int data;
struct tStack *dptr;
};
然后我有一个函数来对其他文件中的堆栈进行理论化,而不是它所谓的:
int stack_init(struct tStack *top)
{
top = (struct tStack*)malloc(sizeof(struct tStack));
if (top == NULL)
{
return E_INTERN;
}
top->data = '#';
top->dptr = NULL;
return 0;
}
我在主文件中调用init函数,如下所示:
struct tStack *top = NULL;
int err = 0;
err = stack_init(top);
问题是堆栈不会被初始化,而指向top的指针仍然是null。 我认为问题在于传递指针,因为我对指针不好:D
答案 0 :(得分:0)
你的stack_init函数创建了一个指针的副本 - stack_init函数的本地指针,一旦stack_init完成就会停止存在。在stack_init函数的主体中,Top实际上不会为null。
你可以这样做:
struct tStack {
int data;
struct tStack *dptr;
};
int stack_init(struct tStack **top) {
*top = (struct tStack*)malloc(sizeof(struct tStack));
if (top == NULL)
{
return ERR;
}
(*top)->data = '#';
(*top)->dptr = NULL;
return 0;
}
int main() {
struct tStack *top = NULL;
int err = 0;
err = stack_init(&top);
}