gpt4 book ai didi

c++ - C++中的指针递增

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:53:41 25 4
gpt4 key购买 nike

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

p1++;  // p1 is a pointer to an int

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

谢谢

最佳答案

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

new_value = reinterpret_cast<char*>(p) + sizeof(*p);

(假设一个指向非const 的指针——否则转换将无法工作。)

也就是说,它会将指针递增 sizeof(*p) 字节,而不管诸如指针值和内存对齐之类的事情。

关于c++ - C++中的指针递增,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6492408/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com