这个问题可能很愚蠢,但我一直在想,如果你有会发生什么
struct List {
int x;
List *next;
};
struct List *start = nullptr;
struct List *tmp = start->next;
tmp怎么了?
我试过编译它,没有出错。如果我输出start
的地址,我得到0,但如果我输出了tmp
,我什么都得不到。
在行struct List *tmp = start->next;
上,因为我们知道start == nullptr
,所以您正在取消引用nullptr值。这是UB(未定义的行为(,因此"任何事情"都可能发生。
这是一个未定义的行为。在多次执行之后,它可能会输出不同的结果,或者可能是分段错误。