我正在从事一个学校项目,而且我无法转换为' void *' to' int'。我怎么能这样做?
示例:
void *search(void *id) {
int i;
}
如何在i中存储id的整数?
答案 0 :(得分:2)
您需要将指针强制转换为int *
,然后取消引用指针。
int i = *(int *)id;
答案 1 :(得分:2)
从void *转换为int
轻松,使用(int)
投射。 void*
始终可以转换为int
。然而,这可能会失去信息,可能不是OP的真正目标。如果目标是将void*
指针真正转换为某个整数而不丢失信息,请考虑可选的整数类型(u)intptr_t
void *search1(void *id) {
int i = (int) id;
...
}
如何在i中存储id的整数?
如果int
位于id
指向的内存中,则转换为int*
并取消引用。
void *search2(void *id) {
int *ip = (int *) id;
int i = *ip; // or in one step *((int *) id)
...
}
如果指针id
不是来自有效的int*
,那么结果就是未定义的行为(UB)。