我对使用struct很陌生,因此我将要显示的某些代码可能不正确,这可能是导致我收到错误的原因。我正在编写尝试使用struct模仿堆栈的代码。我目前正在尝试制作一个pushInt()函数,该函数接受指向堆栈struct和某些int值的指针。这是puchInt()函数的代码:

    Stack *pushInt(Stack *stack, int value)
    {
        stack->intTop = TRUE;
        stack->data.intValue = value;
        stack->next = NULL;

        return stack;
    } // end pushInt


这是我用来定义stact struct的代码。它是一个自引用结构,其行为类似于LikedList:

    struct StackNode
    {
        int intTop;

        union {
            int intValue;
            char stringValue[MAX_STRING_LENGTH];
        } data;

        struct StackNode *next;
    };


这是我用来测试代码功能的主要功能:

    int main()
    {
        Stack *theStack = NULL;

        //getInteger function just gets user input
        int pushValue = getInteger("value to push onto stack: ");
        theStack = pushInt(theStack, pushValue);
    }

最佳答案

theStack = pushInt(theStack,pushValue);

这里传递了NULL指针(用NULL初始化的theStack)。因此,它成为取消引用pushInt函数中的NULL指针,从而导致seg错误。

您需要为变量theStack分配内存

07-26 09:35