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

时间:2017-12-04 00:26:40

标签: c pointers struct self-reference

我对使用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的代码。它是一个自引用结构,就像一个likeList:

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

1 个答案:

答案 0 :(得分:0)

theStack = pushInt(theStack,pushValue);

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

您需要为变量theStack

分配内存