我对使用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);
}
答案 0 :(得分:0)
theStack = pushInt(theStack,pushValue);
这里传递NULL指针(用NULL初始化的堆栈)。因此它变为取消引用pushInt函数内的NULL指针,从而导致seg错误。
您需要为变量theStack
分配内存