【发布时间】:2021-12-11 16:38:37
【问题描述】:
我有一个关于指针递增的问题,我不太明白。
我们来看2个小程序:
int iTuna=1;
int* pPointer= &iTuna;
*pPointer = *pPointer + 1 ; //Increment what pPointer is pointing to.
cout << iTuna << endl;
在第一个程序中,我递增 pPointer 指向的内容,如“*pPointer = *pPointer +1”。 正如我所料,iTuna 更改为“2”,程序打印出值“2”
int iTuna=1;
int* pPointer= &iTuna;
*pPointer++; //Increment what pPointer is pointing to.
cout << iTuna << endl;
system("PAUSE");
return 0;
在这里,我增加了 pPointer 指向的“*pPointer++”。但是这里 iTuna 保持为 "1" 并且程序打印出值 "1" 。 虽然我预计这个会作为第一个工作,但它没有。
请帮助我并告诉我为什么第二段代码没有像我预期的那样工作以及如何解决它。
谢谢
【问题讨论】:
-
小心你使用的两个运算符的operator precedence。
-
在第二个中,增加指针地址。所以如果你做 cout
-
您必须先取消引用,然后再增加指向的内容 -
++*pPointer。 -
而且,顺便说一句,在名为
Pointer的东西上使用p前缀是相当愚蠢的。如果不是指针,Pointer会是什么?