请原谅这个问题的初学者水平.我有以下简单的代码,但它似乎没有运行.它会出现分段错误.如果我用一个简单的实际变量调用替换指针,它运行正常...我不知道为什么.
struct node
{
int x;
struct node *left;
struct node *right;
};
int main()
{
struct node *root;
root->x = 42;
printf("Hello world. %d", root->x);
getchar();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这段代码有什么问题?
Mud*_*Mud 10
struct node *root;
root->x = 42;
Run Code Online (Sandbox Code Playgroud)
您正在取消引用未初始化的指针.要为节点分配存储:
struct node *root = malloc(sizeof(struct node));
Run Code Online (Sandbox Code Playgroud)
您还可以在堆栈上分配节点:
struct node root;
root.x = 42;
Run Code Online (Sandbox Code Playgroud)