我有一个关于增加指针的问题,我不太明白.
让我们看看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”.
虽然我期望这个作为第一个工作,但事实并非如此.
请帮助我,告诉我为什么第二代代码没有像我预期的那样工作以及如何绕过它.
谢谢
解决方法
- *pPointer++;
相当于
- *pPointer;
- pPointer++;
所以它递增指针,而不是取消引用的值.
您可能会不时在字符串复制实现中看到这一点
- while(*source)
- *target++ = *source++;
由于您的问题是运算符优先级的问题,如果您想要解除指针,然后递增,您可以使用parens:
- (*pointer)++;