java叶新东老师 2023-03-18 11:07 采纳率: 83.3%
浏览 34
已结题

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

  • 写回答

4条回答 默认 最新

  • MarkHan_ 2023-03-18 13:04
    关注

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 3月27日
  • 已采纳回答 3月19日
  • 创建了问题 3月18日