如果我特别使用内存地址,例如在编写调试器时(而不是使用指向字符串,浮点数等的指针,因为这样做很有用)我应该使用哪种类型?理想情况下考虑32/64位考虑因素。
我现在使用的一些特殊类型,在相同的代码中,出于相同的目的,包括int64_t,NSUInteger,char *,void *,intptr_t。
基本上我需要按地址进行比较和排序。感谢
答案 0 :(得分:3)
如果您只需要比较地址,那么使用void *应该是可行的方法。这将采用任何类型,引用(&
)运算符将打印出有效的内存位置。最重要的是,它可以在32位和64位类型之间移植,以及随机结构等等。除了使用指针的地址({{}之外,您可以与常规的小于比较进行比较。 1}})而不是指针本身的值。
如果你需要引用这些指针中的数据,你会遇到一些麻烦......
希望这有帮助。
答案 1 :(得分:0)
我认为这是uintptr_t
(来自<stdint.h>
)和void *
之间的折腾。两者都适用于32位和64位环境。我可能会使用uintptr_t
,但你也不会错误地使用void *
。
答案 2 :(得分:0)
可能派上用场的另一种类型是ptrdiff_t
。只需be careful。