gpt4 book ai didi

c++ - 为什么cout指针可以改变数据

转载 作者:搜寻专家 更新时间:2023-10-31 00:12:39 25 4
gpt4 key购买 nike

#include <iostream>
using namespace std;
void reset(int *a, int *b){
int sum = *a + *b;
*a = (sum / 2.0 - sum / 2) >= 0.5 ? sum / 2 + 1 : sum / 2;
*b = *a;
cout << hex << (void *)a<<endl;
cout << hex << b<<endl;
}
int main(){
int a, b;
cin >> a >> b;
reset(&a, &b);
cout << a <<' '<< b << endl;
}

我使用代码重置两个变量,但在我打印变量指针后,数据发生了变化。当我评论两个 cout 语句时。它起作用了。看起来像这样:
cout the pointer

not cout the pointer

最佳答案

您应该返回到 dec,因为您将输出更改为 hex

#include <iostream>
using namespace std;
void reset(int *a, int *b){
int sum = *a + *b;
*a = (sum / 2.0 - sum / 2) >= 0.5 ? sum / 2 + 1 : sum / 2;
*b = *a;
cout << hex; //set hex for output stream
cout << (void *)a<<endl;
cout << b<<endl;
cout << dec; // return to dec system
}
int main(){
int a, b;
cin >> a >> b;
reset(&a, &b);
cout << a <<' '<< b << endl;
}

关于c++ - 为什么cout指针可以改变数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29626381/

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