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