正在为结构(堆栈)分配内存



所以我正在尝试实现某种形式的堆栈。这是我在头文件中的定义:

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);

问题是堆栈不会被初始化,并且指向顶部的指针仍然为null。我认为问题出在传递指针方面,因为我不擅长指针:D

您的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);
}

最新更新