结构分段错误:11。无法重新分配首先初始化为 null 的结构中的值

Struct Segmentation fault: 11. Unable to reassign values in a struct first initialized to null

我对使用 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指针(theStack初始化为NULL)。所以它变成了取消引用 pushInt 函数内的 NULL 指针,因此出现段错误。

您需要为变量 theStack 分配内存