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;