struct node
{
int data;
node* next;
};
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
node* temp;
temp->data=5;
temp->next=0;
cout<<temp->data;
return 0;
}
没有在堆中分配内存,为什么这段代码可以工作?如果正确,为什么我们在堆中分配内存以在链表中创建节点?
在 C 和C++中,"未定义的行为"意味着你做了一些非常严重的错误,结果任何事情都可能发生。它的范围可以从您的程序崩溃,到您的编程破坏硬盘驱动器上的内容,再到您看不到的任何错误,直到您将程序交给客户,在那里它会破坏他们的硬盘驱动器。不要问"这是什么意思"。只是不要这样做。
我建议你找出如何让你的编译器警告这个严重的错误,最好把所有的警告都变成错误。在我的设置中,该代码甚至无法编译。 仅temp->data
就会给出错误"访问未初始化的可变温度"。