其实上面的代码最关键的是这句cout<<*p<<"
"<<*(p++)<<endl;这句不是先执行*p,而是先执行*(p++),p++语句是先把p的值保存起来,作为p++表达式的值返回,然后再执行指针p再移动一位,指向数组的下一个元素;由于上面这句:*(p++)+=123;p开始是指向第一个元素6,执行该语句后,就指向了第二个元素7,所以*(p++)的值就是7,同时p已经指向第三个元素8,那么cout<<*p这句当然也就输出了8。下面是我验证时写的一段程序:
#include<iostream>
using namespace std;
int main()
{
int str[10]={6,7,8,9,10};
int *p;
p=str;
cout<<*p<<endl;
int q = *(p++);
cout << q <<endl;
cout << *p <<endl;
//q += 123;
cout << q <<endl;
cout<<*p<<endl;
cout<<*(p++)<<endl;
return 0;
}