将结构指针分配给空结构指针内的结构指针

时间:2018-11-18 17:09:27

标签: c++

这个问题可能很愚蠢,但是我一直想知道如果您有以下情况会发生什么:

struct List {
    int x;
    List *next;
};
struct List *start = nullptr;
struct List *tmp = start->next; 

tmp会怎样?

我尝试编译它,但没有任何错误。如果我输出start的地址,我得到0,但是如果我输出tmp,我什么都没有。

2 个答案:

答案 0 :(得分:0)

在行struct List *tmp = start->next;上,因为我们知道start == nullptr您正在取消引用nullptr值。这是UB(未定义的行为),因此“任何事情”都可能发生。

答案 1 :(得分:-1)

这是未定义的行为。多次执行后,它可能会输出不同的结果,或者可能是分段错误。