获取变量的十六进制地址为uintptr_t

时间:2018-05-23 04:59:20

标签: c pointers casting type-conversion

int y = 1;
int *x = &y;  
printf("%p\n",x); // instead of printing, get this into variable of type unintptr_t

我想将地址x转换为uintptr_t

类型的变量

有没有办法在C中做到这一点?

2 个答案:

答案 0 :(得分:3)

这并不是特别困难......

uintptr_t z = (uintptr_t)x;

请注意,此强制转换的结果是实现定义的;唯一的保证是,如果你将z强制转换回int *,你将获得原始指针。

顺便说一下,没有“十六进制地址”这样的东西;地址是地址,它们可以看作你最喜欢的任何基数的数字,以十六进制为基础显示它们只是一种约定(它有一些优点)。

答案 1 :(得分:0)

您可以通过显式地将x的地址类型转换为uintptr_t来存储该值。

uintptr_t z = (uintptr_t)&x;