为什么在此方法中声明此变量会覆盖我的 class 成员 (C++)?
Why does declaring this variable in this method overwrite my class member (C++)?
我正在尝试实现链表 class。我有一个名为 node 的结构,它有数据和一个 node*,还有一个链表 class,它有一个指向链表头节点的指针作为 class 成员。我写了一个链表class的插入方法,将数据插入到第n个位置:
void insert(int x, int n) {
node* iterator = headNode;
node* temp;
temp->data = x;
for (int i = 0; i < n-1; i++)
{
iterator = iterator->next;
}
temp->next = iterator->next;
iterator->next = temp;
}
但是,当我这样做时,头节点 class 成员被 temp 覆盖。使用 cout 我发现该行
temp->data = x;
是覆盖它的行。有人可以解释为什么吗?顺便说一下,我可以通过使用 new 在堆上声明 temp 来解决覆盖问题,但同样,有人可以解释为什么吗?
@UnholySheep 在评论中指出,我只是在没有创建节点对象的情况下声明了一个指针,所以发生的是未定义的行为。非常感谢你。
我正在尝试实现链表 class。我有一个名为 node 的结构,它有数据和一个 node*,还有一个链表 class,它有一个指向链表头节点的指针作为 class 成员。我写了一个链表class的插入方法,将数据插入到第n个位置:
void insert(int x, int n) {
node* iterator = headNode;
node* temp;
temp->data = x;
for (int i = 0; i < n-1; i++)
{
iterator = iterator->next;
}
temp->next = iterator->next;
iterator->next = temp;
}
但是,当我这样做时,头节点 class 成员被 temp 覆盖。使用 cout 我发现该行
temp->data = x;
是覆盖它的行。有人可以解释为什么吗?顺便说一下,我可以通过使用 new 在堆上声明 temp 来解决覆盖问题,但同样,有人可以解释为什么吗?
@UnholySheep 在评论中指出,我只是在没有创建节点对象的情况下声明了一个指针,所以发生的是未定义的行为。非常感谢你。