首页 > 解决方案 > 将 char* 转换为 int 内存地址

问题描述

我有:

char* mem = (char*) 0xB8000;

然后mem传递给一个函数。在函数内部,我想取回数字0xB8000并将其与其他一些整数进行比较。如何转换mem回原始整数?

标签: cpointerstype-conversion

解决方案


要将任何指针转换为整数,请执行以下操作:

#include <stdint.h>

uintptr_t ptr_to_integer(const void *ptr) {
    return (uintptr_t) ptr;
}

请注意,uintptr_t平台的大小可能会有所不同。这也是 C 标准的可选部分,因此从技术上讲uintmax_t,它绝对是可移植的。


推荐阅读