指针与整数之间的转换

现代机器上,指针的长度一般等于 CPU 运行模式的寻址位数,在 32 位操作系统上为 4 字节,在 64 位操作系统上为 8 字节;而整数长度在 32 位和 64 位操作系统上一般都为 4 字节。因此将指针与整形相互转换时,务必考虑对 32 位及 64 位操作系统的兼容性。

  • 将整数转换为指针

由于指针的长度一般大于或等于整形的长度,因此直接强制类型转换就可以了:

  • 将指针转换为整数

使用 uintptr_t 或 intptr_t 类型。这两种类型定义在头文件 <stdint.h> 中。