向指针添加偏移量

Tia*_*sta 7 c++ pointers

如果我有一个指向对象的指针,并且我想获得一个指向对象的指针,该对象在指针之后说16个字节,我如何将16字节偏移量添加到指针?

此外,32位系统中的内存地址看起来像这个0x00000000.如果我将0x00000001之类的地址更改为0x00000002会跳过多少字节?

Ker*_* SB 9

指针计数字节,因此要指向下一个字节,您需要将指针的值更改为1.然而,指针算法会对指针指向的对象进行计数,并且递增指针会使其值增加其指针类型的大小.如果要指向字节,请使用char指针,因为char根据定义,大小为1,指针上的指针算术char允许您指向字节:

T * p  = get_pointer();

char * cp = reinterpret_cast<char*>(p);

cp += 16;
Run Code Online (Sandbox Code Playgroud)

向char类型和从char类型转换指针不构成类型惩罚,并且标准明确允许.但是,您不能使用生成的指针来访问实际上不在该地址的任何对象.