c++对指针运算++和+=1是一样的吗?

我的理解是 ,当我们对普通的int类型进行计算时,++ 和 +=1 是一样的,但是对于指针来说好像不一样啊,

以下的例子中, 我看到+=1是正常计算的,指针指向的值进行计算, 但是进行++运算后,确实把指针地址给改变了,有人知道是为啥吗?

void addCalcu(){
        int i=1;
        int * p_i = &i;
        std::cout << "指针原值:"<<*p_i << std::endl;
        *p_i+=1;
        std::cout << "指针++后的值:"<<*p_i << std::endl;
        *p_i++;
        std::cout << "指针+=1后的值:"<<*p_i << std::endl;
}

打印后的结果如下:

img

该回答引用GPTᴼᴾᴱᴺᴬᴵ
在C++中,指针运算++和+=1并不是一样的,因为它们的运算优先级不同。具体来说,++的运算优先级更高,因此在执行完*p_i++之后,指针p_i的地址已经发生了变化,指向的不再是原先的i变量,而是i变量后面的未知内存地址,因此输出的结果是不正确的。
·
如果想让指针指向i变量后面的地址,可以使用括号改变优先级,例如(*p_i)++。另外,对于指针来说,也可以使用p_i += 1来将指针指向下一个位置。

肯定不一样的啊,* p_i+=1,是对p_i指向的值加1,所以是2;不是指针地址加1,而 *p_i++是对pi指针的地址加1,这时p_i就指向变量i存储空间值后的一个整型值空间,所以是个垃圾值

如果没有重载过,那结果是一样的