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

Bor*_*sko 4 c++ scope lifetime

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

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

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

eml*_*lai 6

不,它不起作用.

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