【发布时间】:2021-11-06 15:10:24
【问题描述】:
int* snap = nullptr;
int last = -1;
void func(int* md){
if(snap!=nullptr) {
last = *snap;
}
snap = md;
cout<<last<< " "<<*snap<<endl;
}
int main() {
for(int i =0;i<10;i++) {
int arg = i;
func(&arg);
}
return 0;
}`
输出
-1 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
'last' 变量不应该具有上一次迭代的'snap' 值。但值是相等的。我在这里做错了什么?
【问题讨论】:
-
"上一次迭代的 'snap' 值。" -- 在当前迭代过程中,这个值(不是值的地址,而是值本身)到底存储在哪里迭代?
-
感谢您的帮助。我现在已经意识到我的错误了。我让给定指针指向的值更改而不存储正在更改的值