为什么步骤 3 中的 ' *ptr ' 值不等于 3 而是 0?



我发现步骤: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一样。由于它没有(它指向浮点数),这是未定义的行为。

从那一刻起,任何事情都可能发生。

相关内容

  • 没有找到相关文章

最新更新