C语言 获取变量的十六进制地址作为uintptr_t


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

我想将地址x到类型为uintptr_t的变量中

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

这不是特别困难...

uintptr_t z = (uintptr_t)x;

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

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

您可以通过显式类型转换 x 的 adddress 来存储值 uintptr_t。

uintptr_t z = (uintptr_t)&x;

最新更新