如果我專門處理內存地址,例如,當寫一個調試器(而不是使用指向字符串,浮動等指針,因爲它是有用的這樣做)什麼鍵入我應該使用?理想情況下考慮32/64位的考慮因素。什麼類型的工作/比較內存地址
爲了同樣的目的,我一直在使用的一些adhoc類型,在相同的代碼中,包括int64_t,NSUInteger,char *,void *,intptr_t。
本質上我需要按地址進行比較和排序。謝謝
如果我專門處理內存地址,例如,當寫一個調試器(而不是使用指向字符串,浮動等指針,因爲它是有用的這樣做)什麼鍵入我應該使用?理想情況下考慮32/64位的考慮因素。什麼類型的工作/比較內存地址
爲了同樣的目的,我一直在使用的一些adhoc類型,在相同的代碼中,包括int64_t,NSUInteger,char *,void *,intptr_t。
本質上我需要按地址進行比較和排序。謝謝
如果你只需要比較地址,使用void *應該是要走的路。這將需要任何類型,並且參考(&
)操作員將打印出有效的內存位置。最重要的是,它可以在32位和64位類型之間移植,也可以隨機結構等。等等。除了使用指針的地址(&
)外,您可以比較常規的小於比較,而不是指針本身的價值。
如果你需要在這些指針引用的數據,雖然,你會碰到一些麻煩......
希望這有助於。
我認爲這是在uintptr_t
(從<stdint.h>
)和void *
之間折騰。兩者都適用於32位和64位環境。我可能會使用uintptr_t
,但是您也不會在void *
上出錯。
可能派上用場的另一種類型是ptrdiff_t
。只需be careful。