我有一个关于递增指针的问题,我不太了解。
让我们看两个小程序:
int iTuna=1;
int* pPointer= &iTuna;
*pPointer = *pPointer + 1 ; //Increment what pPointer is pointing to.
cout << iTuna << endl;
在第一个程序中,我像这样“* pPointer = * pPointer +1”来递增pPointer指向的内容。
正如我期望的那样,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”。
尽管我希望这个可以作为第一个工作,但事实并非如此。
请帮助我,并告诉我为什么第二段代码无法按我预期的那样工作以及如何解决它。
谢谢你
最佳答案
*pPointer++;
相当于
*pPointer;
pPointer++;
因此它增加了指针,而不是取消引用的值。
您可能会不时在诸如字符串复制的实现中看到这种情况
while(*source)
*target++ = *source++;
由于您的问题是运算符优先级的问题,因此,如果您要取消引用指针,然后再递增,则可以使用parens:
(*pointer)++;
关于c++ - 增量指针,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11754419/