我可以对C ++本地变量地址做出什么假设

时间:2015-11-11 10:10:21

标签: c++ scope lifetime

我想知道,如果我可以将指针重用于循环块内的变量。

int *ptr = nullptr;
for (int i = 0; i < 5; ++i) {
    int j = 5;
    if (!ptr) ptr = &j;
    cout << *ptr << endl;
}

我相信这段代码适用于所有编译器,但它是否符合标准?

1 个答案:

答案 0 :(得分:6)

不,它不起作用。

在第二次迭代中,ptr指向第一次迭代的j,它不再存在。此时取消引用ptr是未定义的行为。同样在第一次迭代之后进行所有迭代。