我想知道,如果我可以将指针重用于循环块内的变量。
int *ptr = nullptr;
for (int i = 0; i < 5; ++i) {
int j = 5;
if (!ptr) ptr = &j;
cout << *ptr << endl;
}
我相信这段代码适用于所有编译器,但它是否符合标准?
答案 0 :(得分:6)
不,它不起作用。
在第二次迭代中,ptr
指向第一次迭代的j
,它不再存在。此时取消引用ptr
是未定义的行为。同样在第一次迭代之后进行所有迭代。