gpt4 book ai didi

c++ - 为什么我的循环没有终止?

转载 作者:太空狗 更新时间:2023-10-29 23:50:50 25 4
gpt4 key购买 nike

这里是新手问题,有人可以回答为什么这个循环没有终止吗?我正在引用变量的地址,然后取消引用它并向其添加一个。按照我的逻辑,它应该在第 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;
}

最佳答案

您的循环不会终止,因为您对 addtoi 中的 intern 所做的任何更改都保留在 addtoi 中。你在那里使用指针的事实没有任何效果,因为为时已晚:你正在使用局部变量的指针,它是传入的 i 的拷贝。

您可以通过引用传入 intern 来解决此问题,如下所示:

int addtoi(int& intern) {
intern++;
cout << intern << "\n";
return 0;
}

你不需要获取它的地址 - 只需修改它就会改变循环内 i 的值。

关于c++ - 为什么我的循环没有终止?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26331303/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com