新手问题,有人可以回答为什么这个循环没有终止吗?我要刷新变量的地址,然后取消引用它并向其中添加一个。按照我的逻辑,它应该在第10步之前终止。
谢谢!
#include <iostream>
using namespace std;
int addtoi(int intern);
int main(){
for(int i = 0; i < 10;addtoi(i)){
}
}
int addtoi(int intern){
int *pt;
pt = &intern;
++*pt;
cout << *pt << "\t" << intern << "\n";
return 0;
}
最佳答案
循环不会终止,因为您对intern
中的addtoi
所做的任何更改都保留在addtoi
中。您将指针放在那里的事实没有效果,因为为时已晚:您正在获取本地变量的指针,该变量是传入的i
的副本。
您可以通过按引用传递intern
来解决此问题,如下所示:
int addtoi(int& intern) {
intern++;
cout << intern << "\n";
return 0;
}
您无需获取其地址-只需对其进行修改即可更改循环内
i
的值。关于c++ - 为什么我的循环不终止?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26331303/