什么类型的工作/比较内存地址

时间:2011-04-09 12:22:07

标签: c macos pointers

如果我特别使用内存地址,例如在编写调试器时(而不是使用指向字符串,浮点数等的指针,因为这样做很有用)我应该使用哪种类型?理想情况下考虑32/64位考虑因素。

我现在使用的一些特殊类型,在相同的代码中,出于相同的目的,包括int64_t,NSUInteger,char *,void *,intptr_t。

基本上我需要按地址进行比较和排序。感谢

3 个答案:

答案 0 :(得分:3)

如果您只需要比较地址,那么使用void *应该是可行的方法。这将采用任何类型,引用(&)运算符将打印出有效的内存位置。最重要的是,它可以在32位和64位类型之间移植,以及随机结构等等。除了使用指针的地址({{}之外,您可以与常规的小于比较进行比较。 1}})而不是指针本身的值。

如果你需要引用这些指针中的数据,你会遇到一些麻烦......

希望这有帮助。

答案 1 :(得分:0)

我认为这是uintptr_t(来自<stdint.h>)和void *之间的折腾。两者都适用于32位和64位环境。我可能会使用uintptr_t,但你也不会错误地使用void *

答案 2 :(得分:0)

可能派上用场的另一种类型是ptrdiff_t。只需be careful