结构分段错误: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 分配内存
我对使用 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 分配内存