【发布时间】:2020-11-02 20:58:44
【问题描述】:
基本上我创建了一个带有结构的链表和一个将新节点添加到开头的函数。 我在链表中添加了 4 个节点并使用 for 循环读取它。但是输出很奇怪
#include <iostream>
using namespace std;
struct Lin{
int val;
Lin* nex;
};
Lin ext (Lin orig, int nod) {
Lin fresh = {nod, &orig};
return fresh;
};
int main(){
Lin x;
x.val=15;
x=ext(x,25);
x=ext(x,35);
x=ext(x,45);
for (int i = 0; i < 4; i=i+1) {
cout <<x.val<< endl;
x = *x.nex;
}
}
输出是:
45
35
-72537468
892483373
Segmentation fault (core dumped)
前 2 个数字是正确的,但第 3 个数字是错误的。 有人能解释一下到底发生了什么吗?
【问题讨论】:
-
Lin fresh = {nod, &orig};-- 您正在存储临时变量的地址。问问自己当函数返回时会发生什么。 -
只有一个变量 x。您希望如何在一个变量 x 中存储 4 个值?
-
请不要使用
using namespace std;。它提高了标识符与std命名空间中的符号冲突的机会。常见问题与sort、min和max有关。
标签: c++ pointers struct linked-list