我的理解是 ,当我们对普通的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;
}
打印后的结果如下:
该回答引用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存储空间值后的一个整型值空间,所以是个垃圾值
如果没有重载过,那结果是一样的