指针在C++中递增

afa*_*lek 5 c++ pointers increment

这是什么意思:指针增量指向指针的下一个基本类型的地址?
例如:

p1++;  // p1 is a pointer to an int
Run Code Online (Sandbox Code Playgroud)

此语句是否意味着指向的地址p1应更改为下一个的地址,int或者它应该仅增加2(假设int为2个字节),在这种情况下,特定地址可能不包含int
我的意思是,如果p1是,例如,0x442012,将p1++是0x442014(可能是双重地址的一部分),还是指向下int一个地址,如0x44201F?

谢谢

Kon*_*lph 10

指针算术不关心指针对象的内容或有效性.它将使用以下公式简单地递增指针地址:

new_value = reinterpret_cast<char*>(p) + sizeof(*p);
Run Code Online (Sandbox Code Playgroud)

(假设指向非const- 否则演员阵容不起作用.)

也就是说,它会将指针增加一个sizeof(*p)字节数,而不管指针值和内存对齐等.