为什么 int 变量不能保存内存地址?C++
#include <iostream>
#include <string>
#include <cmath>
using namespace std;
int main() {
int a = 5;
int b = &a;
}
为什么这不起作用?如果我像这样制作 ba 指针int *b = &a,那会起作用,但如果内存地址只是一个十六进制整数,那么为什么这不行?
回答
好吧,首先,尺寸可能不匹配;现在大多数通用计算机使用 64 位寻址,但大多数编译器提供 32 位int(历史上,一些早期的 32 位计算机具有 32 位指针,但仍然提供 16 位int;这不是一个新问题)。
也不鼓励这样做,因为它通常是一个错误(有人忘记将变量声明为指针)。
如果你想要一个变量保证能够适合一个指针,但它的行为就像一个整数,你可以使用intptr_toruintptr_t,你只需要将它转换为“是的,我真的打算将此指针用作整数”。