指针操作? C++

Pointer Manipulation? C++

谁能告诉我第 2 行在这里做什么? 我检查它是否只是将 a 的地址分配给 b 但它不是。

int a = 5, *b;
b = (int*) a;

阅读一些关于类型转换和指针的优秀 C++ 编程书籍。

所以在第二行,a 包含 5。您正在将它转换为一个指针(指向 int)(int*)a。这给出了一些包含地址 5.

的(无效)指针

在一些独立的 C++ 运行时环境中——也许是一些廉价的微控制器——地址 5 可能是有意义的和合法的(但即使是 5 也不太可能)。但通常不在托管的 C++ 环境中(例如在 Linux、Windows、MacOSX、Hurd 等上编译并为之编译)

一旦您取消引用该指针(例如使用 int c= *b;),您将得到 undefined behavior, very often some segmentation fault

您可能想要 b = &a; technusm1

的评论