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)字节数,而不管指针值和内存对齐等.