我发现步骤:3 中 '*ptr' 的值不等于 3
#include <bits/stdc++.h>
using namespace std;
int main(int arg, char* args[])
{
int* ptr;
int x = 4;
float y = 3.142;
cout << y << " " << &y << endl; //step:1
ptr = &x;
cout << ptr << " " << *ptr << endl; //step:2
ptr = (int*)(&y);
cout << ptr << " " << *ptr; //step:3 ->problem here
return 0;
}
ptr = (int*)(&y);
cout << ptr << " " << *ptr; //step:3 ->problem here
第二行调用未定义的行为。*ptr
取消引用ptr
所指向的记忆,就好像它指向int
一样。由于它没有(它指向浮点数),这是未定义的行为。
从那一刻起,任何事情都可能发生。