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

赵浩翔*_*赵浩翔 2 c++ pointers

#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;
}
Run Code Online (Sandbox Code Playgroud)

我使用代码重置两个变量,但在打印变量指针后,数据发生了变化.当我推荐两个cout语句时,它可以工作.看起来像这样:
指针

没有cout指针

Ada*_*amF 5

您应该返回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;
}
Run Code Online (Sandbox Code Playgroud)