好吧,我其实不知道如何描述这个:
uintptr_t * ptr = (uintptr_t *) 0x21CC9004;
std::cout << ptr + 0x10 << std::endl;
std::cout << std::hex << 0x21CC9004 + 0x10 << std::endl;
第一行产生21CC9044,第二行产生21CC9014。
那是怎么回事?有人可以解释这个以及我如何向我的指针添加0x10以从第二行获得结果吗?答案 0 :(得分:1)
在第一种情况下,使用指针算术。这意味着添加0x10实际上将0x10 * sizeof(unsigned int)添加到指针的值,该值等于0x40,前提是sizeof(unsigned int)= 4。
在第二种情况下,通常有整数运算。