"*ptrInt ++"有什么作用?

Kli*_*hko 8 c++ syntax pointers

我正在实现一个类似于功能的模板指针包装器boost::shared_ptr.

我有一个指向整数的指针ptrInt.

我想做什么:将整数ptrInt点增加到.

我的初始代码是这样的:*ptrInt ++;虽然我也尝试过同样的使用(*ptrInt) ++;

然而,显然,这似乎没有达到我的预期. 最后我使用了它*ptrInt += 1;,但是我问自己:

  • 到底是*ptrInt ++;做什么的?
  • 是否有更优雅的解决方案*ptrInt += 1;

Dig*_*oss 9

*p++    // Return value of object that p points to and then increment the pointer
(*p)++  // As above, but increment the object afterwards, not the pointer
*p += 1 // Add one to the object p points to
Run Code Online (Sandbox Code Playgroud)

最后两个都增加了对象,所以我不确定为什么你认为它不起作用.如果表达式用作值,则最终表单将在递增后返回值,但其他表单将返回之前的值.

x = (*p)++; // original value in x

(*p)++;
x = *p;     // new value in X
Run Code Online (Sandbox Code Playgroud)

要么

x = ++*p;   // increment object and store new value in x
Run Code Online (Sandbox Code Playgroud)

  • @Caleb:第一行的工作方式与@DigitalRoss描述的非常相似.指针增加,操作结果为*旧值*,然后取消引用. (2认同)