C 将指针转换为数值进行散列-我应该使用'uintptr\u t'还是'intptr\u t'?

C 将指针转换为数值进行散列-我应该使用'uintptr\u t'还是'intptr\u t'?,c,pointers,hash,C,Pointers,Hash,我需要将任意指针转换为数值,以便通过哈希函数传递它 理想情况下,只是为了踢,我还希望数字可以转换回同一个指针。但这不是必须的 在浏览了SO和互联网之后,我不清楚uintpr\t或intptr\t是否是适合这项工作的工具。大多数地方提到了uintptr\u t,但有些地方说,使用无符号类型可能会丢失原始指针的一些位 欢迎澄清 我需要将任意指针转换为数值,以便通过哈希函数传递它 两者都有,intptr\u t以及uintptr\u t 我还想把数字转换回同一个指针 将整数转换回指针值也是可能的。我认

我需要将任意指针转换为数值,以便通过哈希函数传递它

理想情况下,只是为了踢,我还希望数字可以转换回同一个指针。但这不是必须的

在浏览了SO和互联网之后,我不清楚
uintpr\t
intptr\t
是否是适合这项工作的工具。大多数地方提到了
uintptr\u t
,但有些地方说,使用无符号类型可能会丢失原始指针的一些位

欢迎澄清

我需要将任意指针转换为数值,以便通过哈希函数传递它

两者都有,
intptr\u t
以及
uintptr\u t

我还想把数字转换回同一个指针


将整数转换回指针值也是可能的。

我认为C的假设是指针已经是一个数字(它指向的对象在内存中的地址),因此它实际上不需要“转换”。你想通过散列这些来实现什么?@ScottHunter我需要将它们用作散列表中的键。两个不同的void*指针是否可能被转换为相同的
uintptru\t
值?@AvivCohn:从整数转换回原始指针值这一事实隐式地回答了你的问题“否”。为完整起见:仅为:指针值-->整数-->指针值指定转换(需要定义此转换)。未为整型-->指针值-->整型指定它!