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中做到这一点?
答案 0 :(得分:3)
这并不是特别困难......
uintptr_t z = (uintptr_t)x;
请注意,此强制转换的结果是实现定义的;唯一的保证是,如果你将z
强制转换回int *
,你将获得原始指针。
顺便说一下,没有“十六进制地址”这样的东西;地址是地址,它们可以看作你最喜欢的任何基数的数字,以十六进制为基础显示它们只是一种约定(它有一些优点)。
答案 1 :(得分:0)
您可以通过显式地将x的地址类型转换为uintptr_t来存储该值。
uintptr_t z = (uintptr_t)&x;