- 代码如下
#include <iostream>int main() {int a = 10;std::cout << (int)&a << std::endl;return 0;
}
- 编译
这段代码是要将地址转化成整数类型,但是在编译时编译器告诉我们这是错的,因为在C++中,将指针转换为int类型的整数是一个不安全的操作,并且可能会导致数据丢失。
如果你需要以整数形式打印指针的地址,可以使用合适的整数类型,例如uintptr_t,这是一个无符号整数类型,足以容纳指针的位数。 - 下面是修改后的代码
#include <iostream>int main() {int a = 10;std::cout << reinterpret_cast<uintptr_t>(&a) << std::endl;return 0;
}